oracle主键自增

就是创建一个SEQUENCE,通过它来获取自增ID, 
CREATE SEQUENCE MY_TABLE_SEQ
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区

 

如何用? 
插入的时候这样: 
INSERT INTO MY_TABLE (ID) VALUES (MY_TABLE_SEQ.NEXTVAL);  
要把当前这个ID返回可以这样: 
SELECT MY_TABLE_SEQ.CURRVAL FROM DUAL;  

 

 此时已经可以用了。
 
 
注意: 
MY_TABLE_SEQ.CURRVAL 要和 MY_TABLE_SEQ.NEXTVAL配合起来用。 
先MY_TABLE_SEQ.NEXTVAL了,才能取MY_TABLE_SEQ.CURRVAL。
 
可以通过程序实现或触发器进一步改善。

CREATE TRIGGER example_triger BEFORE

INSERT ON example FOR EACH ROW WHEN (new.id is null)--只有在id为空时,启动该触发器生成id号

begin

select

MY_TABLE_SEQ.nextval into: new.id from dual;

end;


测试一下,插入数据


insert into example(name) values('张三');

insert into example(id, name) values(111,'李四');

 
posted @ 2017-11-03 15:05  君子笑而不语  阅读(184)  评论(0编辑  收藏  举报