每当触发器表有updates
命令或insert into
时,我需要创建after insert trigger
另一个表的触发器。
我需要将正在插入表中的id拉出来更新另一个表,我该怎么做呢?
如果这令人困惑,另一次尝试我的问题:
Table 1
有一个after insert trigger
。所述trigger
根据插入table 2
的其中一个id值更新table 1
。如何从table 1
中的trigger
提取所述ID值?
答案 0 :(得分:2)
您可以在触发器中使用:new来引用要插入的值,例如
create or replace trigger <trigger_name>
after insert on <table_name>
for each row
declare
l_id number;
begin
select :new.id into l_id from dual;
-- now l_id contains the id of the inserted row, do what you want with it
end;
不要以字面意思为例;你不必首先选择:new.id到一个变量中,你可以直接在SQL里面使用它来触发它。我这里做的只是为了说明。
查看Oracle文档:Coding Triggers
但是,您可能还想看看一些争论,如果您真的需要将逻辑放入触发器中,为什么要三思而后行:The Trouble with Triggers
答案 1 :(得分:0)
CREATE OR REPLACE TRIGGER testempdel
AFTER insert ON testemp
FOR EACH ROW
BEGIN
update testdelvalues set salary=:New.sal;
END;
/
Trigger created.
最初薪水为空
SQL> select * from testdelvalues;
EMPNO EMPNAME SALARY
---------- ---------- ----------
7369 SMITH
在其他表中插入值后更新
SQL> insert into testemp (empno,ename,sal) values (1231,'TESTUSER',1000);
1 row created.
SQL> select * from testdelvalues;
EMPNO EMPNAME SALARY
---------- ---------- ----------
7369 SMITH 1000