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自增的问题。