我在删除一条数据时将其备份至另一个结构完全一样的表,写了下面的触发器,麻烦各位大侠看看是什么问题。
create or replace trigger td_equip_fault
before delete on equip_fault
for each row
declare
-- local variables here
ll_pkid number(8,0);
begin
pkid :=:old.pkid;
insert into equip_fault_copy
select * from equip_fault
where pkid = ll_pkid;
end td_equip_fault;其中pkid是主键。
create or replace trigger td_equip_fault
before delete on equip_fault
for each row
declare
-- local variables here
ll_pkid number(8,0);
begin
pkid :=:old.pkid;
insert into equip_fault_copy
select * from equip_fault
where pkid = ll_pkid;
end td_equip_fault;其中pkid是主键。
before delete on equip_fault
应该是after吧
insert into equip_fault_copy values(:old.col1,:old.col2...);
如果必须执行这种操作的话,得转变一下使用方法。
方案:在更新前做一个for each row的触发器,把被更新的数据主键放到另一个表(表A)里面。
在更新后做一个表触发的触发器,这种触发器可以执行查询所在表的操作,但是因为是表触发就不能知道当前操作的数据的信息,这个时候去表A里面把主键都取出来进行你想要的操作就可以了。当然也许会有其他更好的办法,仅供参考。