时间:2021-07-01 10:21:17 帮助过:14人阅读
第二部创建触发器
CREATE OR REPLACE TRIGGER TRIGGER_NEW
BEFORE INSERT ON TABLE_NAME
REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
ENABLE WHEN (NEW.ID IS NULL)
BEGIN
SELECT
SEQ_NEW INTO : NEW.ID
FROM
DUAL
END
二、序列+显示调用
同样先创建触发器
CREATE SEQUENCE SEQ_NAME
INCREMENT BY 1
MINVALUE 1
NOMAXVALUE
START WITH 1
NOCYCLE
NOCACHE
下面显示调用
INSERT INTO TABLE_NAME VALUES(SEQ_NAME.NEXTVAL)
三、先指定主键值,查询此表最大值一次加一
INSERT INTO TABLE_NAME VALUES(SELECT MAX(ID)+1 ID FROM TABLE_NAME2)
当然第三种方式局限性很大,也可以在代码中操作不用SQL语句来累加,因为代码的执行速度要远比sql语句代码执行的速度快的多的多
注:
查看当前序列的值
SELECT SEQ_NAME.CURRVAL FROM DUAL
查看当前序列的下一个值
SELECT SEQ_NAME.NEXTVAL FROM DUAL
dual为Oracle里面虚拟的表,并不真实存在
Oracle实现主键自增的几种方式
标签:row cycle 触发器 style min 显示 creat 情况下 values