以前在使用mysql 和SQL server时,他们都有自增字段设置的关键字,在创建表时一并创建。现在使用oracle发现没有自增字段这样的功能,可以通过触发器trigger和序列sequence来实现:
先建一个测试表:
create table scott.TableName
(
id number(6) not null,
name varchar2(30) not null primary key
)
第一步:创建SEQUENCE
create sequence SeqName
increment by 1
start with 1
minvalue 1
maxvalue 9999999999999
nocache order;
第二步:创建一个基于该表的before insert 触发器,在触发器中使用刚创建的SEQUENCE
create or replace trigger TriggerName
before insert on scott.TableName
for each row
begin
select SeqName.nextval into:new.id from sys.dual ;
end;
第三步:在TableName表中测试
insert into scott.TableName (name) values ('wang');
先建一个测试表:
create table scott.TableName
(
id number(6) not null,
name varchar2(30) not null primary key
)
第一步:创建SEQUENCE
create sequence SeqName
increment by 1
start with 1
minvalue 1
maxvalue 9999999999999
nocache order;
第二步:创建一个基于该表的before insert 触发器,在触发器中使用刚创建的SEQUENCE
create or replace trigger TriggerName
before insert on scott.TableName
for each row
begin
select SeqName.nextval into:new.id from sys.dual ;
end;
第三步:在TableName表中测试
insert into scott.TableName (name) values ('wang');