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。
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,'李四');