欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle11g自增主键

程序员文章站 2022-04-05 22:11:22
...

oracle的自增主键需要用序列和触发器来实现,

我们首先创建一张表:主键为int,实现自增


createtableTEST

 

(

 

  ID intPRIMARYKEY,

 

  test1 varchar2(20),

 

  test2 varchar2(20),

 

  test3 varchar2(20)

)

 

 

创建一个序列:


create sequence SEQ_TEST

 

minvalue 1    --最小值

 

maxvalue 999999999999999999999999999 --最大值

 

start with 1 ---1开始

 

increment by 1 ---每次加1

 

nocycle        --一直累加,不循环

       nocache;

 

 

创建一个触发器实现数据插入时主键自增:

 


CREATE OR REPLACE TRIGGER tg_test

 

//test表名,id主键名,seq_test.nextval序列

 

BEFORE INSERT ON test

FOR EACH ROW WHEN (new.id is null)

 

     begin

 select seq_test.nextval into:new.id from dual;

 

end;

 

 

可以看出当插入数据主键为空时,会使用序列产生自增主键

 

//------------------触发器样式

 

CREATE OR REPLACE TRIGGER TRI_SCORE

 

BEFORE INSERT OR UPDATE ON XUANKE

 

FOR EACH ROW

 

BEGIN

 

//如果score为空,则令score=0

 

  IF :new.SCORE IS NULL THEN :new.SCORE:= 0;

 

    END IF;

 

END;