使用trigger在oracle中生成主键

时间:2014-05-09 05:32:27

标签: sql oracle triggers

新我想在我的oracle数据库中创建一个触发器,为每个新行生成主键。 pk包含两部分,第一部分是to_char(sysdate, 'yyyyMMddHH24mmss'),第二部分是由序列生成的ID,如to_char(SEQ_A_ID, FM000000 )SEQ_A是一个从1开始的int序列,增量为{​​{1}}。我的pk数据类型是1

现在我写SQL如下:

varchar2(20)

上面的SQL有一些错误,但我不知道将CREATE OR REPLACE TRIGGER "DEMO"."TRIGGER_A_ID" BEFORE INSERT ON "DEMO"."A" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW ENABLE BEGIN select to_char(sysdate,‘yyyyMMddHH24mmss’) || to_char(SEQ_A_ID.nextval,'FM00000') into :new.id from dual; END;; 语句的结果放入我的pk的正确方法。

1 个答案:

答案 0 :(得分:2)

create or replace trigger "DEMO"."TRIGGER_A_ID"
   before insert on "DEMO"."A"
   referencing old as "OLD" new as "NEW"
   for each row enable

   l_id varchar2(20);
begin
   select to_char(sysdate, ‘yyyymmddhh24mmss’) || to_char(seq_a_id.nextval, 'FM00000')
     into l_id
     from dual;

     :new.id:= l_new_id;
end;