Oracle自增ID实现

来源:互联网 发布:厚学网网站源码 编辑:程序博客网 时间:2024/04/26 15:14

首先,创建一张表:

  1. create table test( 
  2.    id number(32) not nullprimary key
  3.    name varchar2(32) 
  4. ); 

然后,自定义一个序列(sequence)

 

  1. CREATE SEQUENCE test_sequence 
  2. INCREMENT BY 1 -- 每次加几个 
  3. START WITH 1 -- 从1开始计数 
  4. NOMAXVALUE -- 不设置最大值 
  5. NOCYCLE -- 一直累加,不循环 
  6. NOCACHE -- 不建缓冲区 

还需要创建一个触发器(trigger)

 

  1. CREATE TRIGGER test_trigger 
  2.    BEFORE INSERT ON test 
  3.    FOR EACH ROW 
  4.    WHEN (new.id isnull) --只有在id为空时,启动该触发器生成id号 
  5. begin 
  6.    select test_sequence.nextval into :new.id from sys.dual; 
  7. end

插入测试数据
  1. insert into test(name)values('zhangsan'); 
  2. insert into test(id,name) values(101,'lisi'); 

结果:


PS:创建trigger时into :new.id from sys.dual中的":"是靠近new的 而不是into: new.id from sys.dual

0 0