oracle不像sql
server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用SequenceCreate Table Tempinfo( ids int not null, names nvarchar2(50), sex varchar(10))insert into Tempinfo (ids,names,sex) values (1,'Serein',2188);insert into Tempinfo (ids,names,sex) values (2,'James',2182);select * from Tempinfo--drop table Tempinfo
实现oracle 自增列第一步,创建一个sequence。
CREATE SEQUENCE Tempinfo_seq INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXvalue -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
一旦定义了Tempinfo_seq,你就可以用currval,nextval
currval=返回 sequence的当前值 nextval=增加sequence的值,然后返回 sequence 值比如:
Tempinfo_seq.CURRVAL Tempinfo_seq.NEXTVAL第二步,创建一个触发器。
create or replace trigger userlogin_triggerbefore insert on Tempinfofor each rowbegin select Tempinfo_seq.Nextval into:new.ids from sys.dual ;end;
执行插入查看
insert into Tempinfo (names,sex) values ('Terry',2189);
当然也事不用创建触发器,直接在插入数据时使用sequence就可以了
insert into Tempinfo (ids,names,sex) values (Tempinfo_seq.Nextval,'Serein',2188);
可以使用sequence的地方:
- 不包含子查询、snapshot、view的 select 语句 - INSERT语句的子查询中 - NSERT语句的values中 - UPDATE 的 set中
删除序列
简单的Drop Sequence Sql代码drop sequence Tempinfo_seq;
参考: