新我想在我的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的正确方法。
答案 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;