是否可以在触发器中引用第二个表?
create or replace trigger table1
before update of status_code on table1
for each row
declare z_user_id table2.user_id;
begin
if :new.status_code in (30,40) then
:new.z_open_01 := nvl(:OLD.z_user_id, nvl(:NEW.z_user_id, :old.z_open_01));
end if;
end;
/
答案 0 :(得分:0)
关于你的问题:是的。
:old和:new构造仅适用于导致触发器触发的表。 您编写的方式是触发Table1,但您的描述听起来像是在Table2中的某些内容发生更改时从表1中获取值。 但是您没有用您抓取的用户ID说出您想要做的事情。 如果在Table2上创建触发器,请从Table1中读取值,并将值保存在触发触发器的行的列中。其他情况变得更加复杂。
所以,基于评论的内容如下:
create or replace trigger table2
after update of status_code on table2
for each row when (:new.status_code in (30,40))
declare t1_user Table1.user_id%type;
begin
Select user_id into t1_user from Table1 where <condition>
:new.z_open_01 := t1_user;
end if;
end;
/
设置任何条件从Table1中选择所需的用户。