SQL Server中实现自增列只需要将字段定义为IDENTITY(1,1),而在Oracle中自增列需要使用一个序列(SEQUENCE)和触发器来实现。
1. 创建SEQUENCE,首先需要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限
CREATE SEQUENCE s_id INCREMENT BY 1 START WITH 1 MAXVALUE 999999999;
创建一个序列从1开始自增,最大值到999999999。
或者不设置最大值:
CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE --INCREMENT BY 1 -- 每次加几个 --START WITH 1 -- 从1开始计数 --NOMAXVALUE -- 不设置最大值 --NOCYCLE -- 一直累加,不循环 --CACHE 10; -- 缓存序列个数,有助于提高效率,但可能造成跳号
2. 创建表的BEFORE INSERT触发器,使用该SEQUENCE
CREATE OR REPLACE TRIGGER BEFORE_INSERT_T_XXX BEFORE INSERT ON "T_XXX" FOR EACH ROW BEGIN SELECT s_id.nextval INTO :new.COL_ID FROM dual; END;
或者不使用触发器,在INSERT语句中直接使用s_id.nextval获取下一个自增值。