由于第一次在项目中使用Oracle。哎,惭愧啊,居然被一个自增列的问题困扰许久。这个没有SQL Server使用起来方便,Oracle需要通过自增序列SEQUENCE加上触发器来实现。
1、创建SEQUENCE,首先你需要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。
例如:
CREATE
SEQUENCE s_id INCREMENT
BY
1
START
WITH
1
MAXVALUE
999999999
;
CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
-- INCREMENT BY 1 -- 每次加几个
-- START WITH 1 -- 从1开始计数
-- NOMAXVALUE -- 不设置最大值
-- NOCYCLE -- 一直累加,不循环
-- CACHE 10;
CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
-- INCREMENT BY 1 -- 每次加几个
-- START WITH 1 -- 从1开始计数
-- NOMAXVALUE -- 不设置最大值
-- NOCYCLE -- 一直累加,不循环
-- CACHE 10;
定义完SEQUENCE以后,就可以使用s_id.CURRVAL获取SEQUENCE当前值,使用s_id.NEXTVAL获取增加后的SEQUENCE值。
2、创建表的BEFORE INSERT触发器,使用该SEQUENCE
create or replace trigger myTrigger
before insert on myTable
referencing old as old_value new as new_value
for each row
begin
new_value.userid= s_id.nextval;
end;
当然,也可以不实用触发器,可以再插入数据的时候直接调用。
before insert on myTable
referencing old as old_value new as new_value
for each row
begin
new_value.userid= s_id.nextval;
end;