我的触发器如下:
create or replace
TRIGGER impt_downloadproc
before delete ON A
declare
storedate nvarchar2(80);
storetime nvarchar2(80);
sequel string(2000);
BEGIN
storedate := to_char(sysdate,'YYYYMMDD');
storetime := to_char(sysdate,'HH24MISS');
sequel:='create table B_'||storedate||'_'||storetime||' as select * from ipcsdd_download_process';
execute immediate sequel;
END;
我在触发器中尝试做的是:在某人/某物从A表中删除记录之前, 创建一个备份表B_yyyymmdd_hhmmss并将记录备份到该表。
但是我得到了错误:storedate:= to_char(sysdate,'YYYYMMDD'); 我不明白这是什么问题。
答案 0 :(得分:2)
我希望有一个不同的错误 - 你不能在触发器中提交。 如果你真的想要那么你需要使用自主交易(这通常不是一个好主意)
所以,你的代码应该是这样的:
create or replace
TRIGGER impt_downloadproc
before delete ON A
declare
pragma autonomous_transaction; -- see this line
storedate nvarchar2(80);
storetime nvarchar2(80);
sequel string(2000);
BEGIN
storedate := to_char(sysdate,'YYYYMMDD');
storetime := to_char(sysdate,'HH24MISS');
sequel:='create table B_'||storedate||'_'||storetime||' as select * from ipcsdd_download_process';
execute immediate sequel;
END;