第一步:
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 ( '路人丙' );
得到数据: