oracle里的自动增长字段,可以用触发器来实现。
1、在创建触发器之前要创建一个sequence(序列号),每次取的时候它会自动增加。你要有创建sequence的权限语法:
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值 , NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
2、创建触发器:
语法:
create or replace trigger trigger_name
before insert
on table_name
for each row
begin
select seqname.nextval
into :new.id
from dual;
end;
3、insert SQL语句...
附注:修改删除sequence:
1、Alter Sequence
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动 sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create .
Alter sequence 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
2、删除Sequence
DROP SEQUENCE SequenceName;