Oracle数据库表主键自增长实现

Oracle数据库不像MySQL数据库和SQLServer一样,表主键自增长,通过一个建表语句属性配置即可实现,所以Oracle数据库主键自增长如何实现那呢?

解决方案

l  创建序列

CREATE SEQUENCE SEQ_STU

INCREMENT BY 1      --ID每次自增几

START WITH 1         --ID从几开始自增

MAXVALUE 99999      --ID的最大值

MINVALUE 1;          --ID的最小值

l  创建触发器(在新增数据一条时取序列的下一个值作为主键值)

CREATE OR REPLACE TRIGGER TIGGER_STU

BEFORE

     INSERT ON classinfo

FOR EACH ROW

     WHEN(NEW.classid IS NULL)  --触发条件(如果没有的话,就都可以触发)

BEGIN

         SELECT SEQ_STU.NEXTVAL INTO:NEW.classid FROM DUAL;

END;

 

l  注意事项:

实现表主键增长时候,创建序列的和触发器的时候要注意,

如果表里已经有数据了,可能序列新值的数据与表中的值冲突,

违反唯一约束条件,需要先清空表数据,在创建序列和触发器

posted @ 2022-03-09 10:13  NOT_COPY  阅读(154)  评论(0编辑  收藏  举报