先创建一个名字为test_Sequence的序列,然后执行下列语句,
CREATE TABLE example1(
ID Number(4) NOT NULL PRIMARY KEY,
NAME VARCHAR(25),
PHONE VARCHAR(10),
ADDRESS VARCHAR(50));
create trigger "example1_tt" before insert
on "EXAMPLE1" for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
-- Column ""ID"" uses sequence Sequence_increase
select test_Sequence.Nextval INTO :new."ID" from dual;
-- Errors handling
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
需要注意的是不同的表共用同一个序列时,由于序列的是一个,所以不同表的自增会不连续,另外和SqlServer不同的还有,设置了这个以后主键是可以自己维护的,只有当主键为空时才会调用触发器,由序列产生自增值。
另外,pd自动生成的oracle的sql语句是包含双引号的,可能导致oracle权限的错误,错误提示是:ORA-00904:invalid identifier。