在Oracle、MySQL、MS SQL Server中创建自动增长字段
2011-11-01 15:34
696 查看
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;
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)
)
identity(begin,increment) begin:从哪一个位置开始。increment:表示每次增长的大小
insert into t_user (username,userPass) values(‘handson’,’handson’)
insert into t_user (username,userPass) values(‘admin’,’admin’)
一、在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;
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)
)
identity(begin,increment) begin:从哪一个位置开始。increment:表示每次增长的大小
insert into t_user (username,userPass) values(‘handson’,’handson’)
insert into t_user (username,userPass) values(‘admin’,’admin’)
相关文章推荐
- 在Oracle、MySQL、MS SQL Server中创建自动增长字段
- 在Oracle、MySQL、MS SQL Server中创建自动增长字段
- ibatis中主键自动增长(Oracle,Ms sql server ,mysql)
- ibatis中主键自动增长(Oracle,Ms sql server ,mysql)
- ibatis中主键自动增长(Oracle,Ms sql server ,mysql)
- Oracle使用序列创建自增字段(主键自动增长)
- [轉]mysql 自动增长字段创建
- SQL 2000创建表的时候设置某一字段为自动增长的类型
- mssql 和 mysql的区别,让自动增长列自动递增就必须指定其他列名,mysql创建事务,如果插入的字符多余字段的值,会报错?截取插入?带输出参数的存储过程,带If else判断
- 用SQL在Access中创建带自动增长字段的表
- iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- oracle sqlserver mysql 通过sql查看表及字段注释
- MYSQL/SQL_SERVER/ORACLE三种数据库自动备份方法
- iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
- 在oracle中创建自动增长字段
- 在oracle中创建自动增长字段
- 在oracle中创建自动增长字段