数据库(mysql、mssql、Oracle)自动增长

在不同数据库中,怎么样创建自动增长长字段:
+++++++++++++++++++++++++++++++++++++++
mysql:
id int auto_increment not null
++++++++++++++++++++++++++++++++++++++
mssql:
id int primary key identity(1,1),
identity(begin,increment) begin:从哪一个位置开始。increment:表示每次增长的大小
++++++++++++++++++++++++++++++++++++++
Oracle:
一、在Oracle中的没有自动增长的数据类型,但可以使用序列(Sequence)代替。具体步骤如下:
1、 创建一个t_user的用户表:
create table t_user(
id number primary key,
userName varchar2(15) not null unique,
userPass varchar2(20)
);

2、 创建一个序列seq_user_id:
create sequence seq_user_id
start with 1 –从1开始
increment by 1;--每次增量为1

3、 创建一个触发器使给id 赋值:
create trigger tr_user_id
before
insert
on t_user
for each row
begin
select seq_user_id.nextval into :new.id from dual;
end;
通过触发器使序列和id结合起来,每次插入不用再引用序列。
insert into t_user (userName,userPass) values('handson','handson');

insert into t_user (userName,userPass) values('admin','admin');
2、建立一个创建自增字段的存储过程
create or replace procedure pro_addIncrement(tableName in varchar2 , columnName in varchar2)
as
strsql varchar2(1000);
begin
strsql := 'create sequence seq_'||tableName||'_'||columnName||' start with 1 increment by 1';
execute immediate strsql;
strsql := 'create or replace trigger tr_'||tableName||'_'||columnName||' before insert on '||tableName||' for each row
begin
select seq_'||tableName||'_'||columnName||'.nextval into :new.'||columnName||' from dual;
end;';
execute immediate strsql;
end;
2、 调用存储过程建立自增字段并测试
create table t_user(
id number primary key,
userName varchar2(20) not null unique,
userPass varchar2(20)
);
exec pro_addIncrement('t_user','id');
insert into t_user (userName,userPass) values('handson','handson');
insert into t_user (userName,userPass) values('admin','admin');
insert into t_user (userName,userPass) values('yangdongxin','pass');
insert into t_user (userName,userPass) values('java','java');

posted on 2014-04-23 12:15  NiYaMiYa  阅读(136)  评论(0)    收藏  举报