sequence是用来在多用户环境下产生唯一整数的数据库对象。序列产生器顺序生成数字,它可用于自动生成主键值,并能协调多行或者多表的主键操作。
CREATE SEQUENCE SEQTEST
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
查询当前用户的
SELECT * FROM USER_SEQUENCES;
查询所有的
SELECT * FROM ALL_SEQUENCES;
其中SEQUENCE_NAME就是序列的名字
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME='SEQTEST';
SELECT SEQTEST.CURRVAL FROM DUAL;
SELECT SEQTEST.NEXTVAL FROM DUAL;
注意:
直接 CURRVAL会报错,
必须在当前会话中使用过 NEXTVAL 后才能使用 CURRVAL,否则报错 ORA-08002
ORA-08002: 序列SEQTEST.CURRVAL 尚未在此进程中定义。
实例
创建表结构
create table S_Depart_test (
DepartId INT not null,
DepartName NVARCHAR2(40) not null,
DepartOrder INT default 0,
constraint PK_S_DEPART_test primary key (DepartId)
);
创建序列
create sequence SEQ_test
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
insert into S_Depart_bak(departId,Departname,Departorder)values(SEQ_test.Nextval,'12345',1);
SELECT SEQ_test.NEXTVAL FROM DUAL;
SELECT SEQ_test.CURRVAL FROM DUAL;
select * from S_Depart_bak;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29050044/viewspace-2140917/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29050044/viewspace-2140917/