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 注意事项:
实现表主键增长时候,创建序列的和触发器的时候要注意,
如果表里已经有数据了,可能序列新值的数据与表中的值冲突,
违反唯一约束条件,需要先清空表数据,在创建序列和触发器