在Oracle、MySQL、MS SQL Server中创建自动增长字段
Oracle:
一、在Oracle中的没有自动增长的数据类型,但可以使用序列(Sequence)代替。具体步骤如下:
1、 创建一个t_user的用户表:
create table t_user( |
2、 创建一个序列seq_user_id:
create sequence seq_user_id |
3、 创建一个触发器使给id 赋值:
create trigger tr_user_id |
insert into t_user (userName,userPass) values('handson','handson');
insert into t_user (userName,userPass) values('admin','admin');
|
二、创建一个存储过程来建立自动增长字段:
1、 Oracle中执行动态SQL时要显示授权(即使该用户拥有该相关权限)
grant create any sequence to scott; grant create any trigger to scott; |
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');
|
MySQL:
1、开启MySQL服务:在运行中输入net start mysql (net stop mysql关闭服务)
|
2、打开MySQL命令行,输入用户名、密码登录MySQL服务器
|
3、创建数据库user_db,并使用此数据库
Create database user_db; Use user_db; |
4、创建表t_user
create table t_user( id int primary key auto_increment,--auto_increment表示自动增长,增量为1 userName varchar(15) not null unique, userPass varchar(20) );
insert into t_user (username,userPass) values(‘handson’,’handson’) ,(‘admin’,’admin’);
|
MS SQL Server:
create table t_user( id int primary key identity(1,1), userName varchar(15) not null unique, userPass varchar(20) )
insert into t_user (username,userPass) values(‘handson’,’handson’) insert into t_user (username,userPass) values(‘admin’,’admin’)
|