Oracle序列*触发器
使用序列和触发器实现Oracle数据库主键的自动递增
- 序列【重点】:
I. 语法:create sequence序列名 [参数];
II. 详解:用来生成一列自动增长的值。
create sequence seq_class
[minvalue 值] --最小值
[maxvalue 值] --最大值
[start with ] --起始值
[increment by 值] --递增数
[cache 缓存个数] --每次生成时,可一次获取多个序列编号,避免每次生成都访问数据库服务器。
[cycle] --循环,当生成序列数达到maxvalue后,是否循环使用。根据业务,允许不唯一的列可以使用。
[order] --保证获取顺序。当数据量庞大时,序列只能保证顺序的唯一性,而不保证数据的序列数的顺序。1~10,21~30,11~20
注:默认start with 1 increment by 1
用例
-- 再建一个序列 seq_document_fid
create sequence seq_document_fid
minvalue 1 --最小值
nomaxvalue --不设置最大值
start with 1 --从1开始计数
increment by 1 --每次加1个
nocycle --一直累加,不循环
nocache --不建缓冲区
/
--只有了表和序列还不够,最好再建一个触发器来执行它
CREATE OR REPLACE TRIGGER tg_document
BEFORE INSERT ON t_document FOR EACH ROW WHEN (new.fid is null)
begin
select seq_document_fid.nextval into:new.fid from dual;
end;
/
注:
drop sequence 序列名; --删除序列