我如何进行这项工作?
我想创建一个触发器,当从plt_result表中删除包含所选plt_no的行时,将其从plt_result表中拾取plt_no并将prod_result表中的plt_no更新为null。
这是我的代码。
CREATE or replace TRIGGER delete_prevent2
before delete
ON plt_result
FOR EACH ROW
declare
v_plt_no nvarchar2(20);
begin
select plt_no into v_plt_no from prod_result;
update prod_result
set plt_no = null
where plt_no = v_plt_no;
end;
我在这里做什么错了?
答案 0 :(得分:0)
从plt_result表中获取plt_no
您的代码是从prod_result
表中选择的,而不是plt_result
此外,它选择时没有WHERE
子句,因此它试图读取所有记录,而不仅仅是读取当前记录。
要使用要删除的记录中的值,请使用:OLD
。参见documentation。
CREATE OR REPLACE TRIGGER delete_prevent2
BEFORE DELETE ON plt_result
FOR EACH ROW
BEGIN
UPDATE prod_result
SET plt_no = NULL
WHERE plt_no = :OLD.plt_no;
END;