Oracle INSERT中某字段自增操作 触发器实现

INSERT时,有时候需要一个单独的ID作为主键,或者有字段要求不重复,或者单纯想要填充一个字段,目前新学了一个方法填充:使用触发器,触发器可以在指定动作的相关时间上做出触发器动作,不过,要实现触发器还需要一个序列,插入的序列才能保证单增或者不重复来作为主键。

首先新建序列

CREATE SEQUENCE 序列名
INCREMENT BY 1            --每次增加1
START WITH 1              --从1开始
NOMAXVALUE                --没有最大值
NOCACHE                   --没有缓存序列

新建的序列编译后如果你是PL/SQL dev 那么你能够从连接到的数据库的对象窗口的Sequences里找到它

然后是利用刚刚建好的序列建个触发器

CREATE OR REPLACE TRIGGER 触发器名
BEFORE INSERT                        --在插入之前触发
ON 表名
FOR EACH ROW                         --对表的每一行触发器执行一次
BEGIN
SELECT 序列名.NEXTVAL INTO :NEW.ID FROM DUAL;    --NEW.ID中的NEW等于新插入的一行
END;    

然后你再执行INSERT操作的时候,这个表的ID就不会报不允许NULL值的错了。

当然,大家也可以去搜索下触发器的使用,包括各种触发时刻以及触发操作,序列的各种使用场景,这里只是解决INSERT自增的问题。

posted @ 2023-03-01 09:55  龚一半  阅读(361)  评论(0编辑  收藏  举报