第一步:
DROP sequence 序列名;-- 删除以前的序列,以前没有的话不需要删除 CREATE sequence 序列名 minvalue 1 MAXVALUE 99999999 increment BY 1 START WITH 1;
第二步:
DROP TRIGGER 触发器名;-- 删除触发器名,以前没有的话不需要删除
CREATE OR REPLACE TRIGGER 触发器名 BEFORE INSERT ON 表名 FOR EACH ROW BEGIN SELECT 序列名.nextval INTO : new.自增字段名 FROM DUAL; END;
搞定
下面举个例子吧:
新建一张TEST表,里面有两个字段,分别是ID和NAME,设置ID为主键,注意ID是NUMBER类型
-- 新建序列self_increasing_seq CREATE sequence self_increasing_seq minvalue 1 MAXVALUE 99999999 increment BY 1 START WITH 1; -- 新建触发器 CREATE OR REPLACE TRIGGER self_increasing_trigger BEFORE INSERT ON TEST FOR EACH ROW BEGIN SELECT self_increasing_seq.nextval INTO : new.ID FROM DUAL; END;
执行下面的插入sql:
INSERT INTO TEST (NAME) VALUES ( '路人甲' ); INSERT INTO TEST (NAME) VALUES ( '路人乙' ); INSERT INTO TEST (NAME) VALUES ( '路人丙' );
得到数据: