【发布时间】:2013-11-28 20:33:18
【问题描述】:
我正在尝试编写一个触发器来跟踪一个表。
我有一个表 1 和表 2 。当我将数据插入表 1 时,触发器成功地将相同的数据插入表 2,但是当我更新表 1 时,表 2 仍然具有相同的数据
表格 DDL:
tab1
身份证号码(6);
信息 varhcar2(20);
tab2
身份证号(6);
信息 varchar2(20);
id_new number (6);
info_new varchar2(20);
触发器:
CREATE OR REPLACE TRIGGER tab2_logs
after INSERT or update or delete
ON tab1
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
insert into tab2_logs (
id, info)
values (:new.id ,:new.info);
else if updating then
update tab2_logs set
id = :old.id,
info = :old.info,
id_new = :new.id,
info_new = :new.id
where id = :new.id;
end if;
end if;
END;
我确实在我的查询中提交并且触发器编译成功
【问题讨论】:
-
您的 where 子句不应该检查
:old.id,因为:new.id还不知道吗? -
你的意思是把它写成 ' where id = :old.id ' ?它也没有用
-
我认为你应该使用
ELSIF -
我更正了 elsif ,仍然没有更新
-
TBH 你的整个逻辑有一个缺陷,因为你只能更新你的日志表一次,然后它就不起作用了,因为你正在使用一个不再存在于日志表中的新 id
标签: oracle