显示使用触发器更新的记录

时间:2016-06-04 12:47:32

标签: database plsql triggers dml

我是PL / SQL的新手,有这样的问题:

我想创建一个触发器,显示该人的姓氏,其电话号码已更新

我做了什么

Set SERVEROUTPUT ON

Create or replace trigger inform
after update of scontact_number on SUPLIER
for each row
DECLARE 
x SUPLIER.ssurname%TYPE;
BEGIN
Select SSURNAME
into x
from SUPLIER;
dbms_output.put_line('New tel number for ' || x);
END;
/ 

UPDATE SUPLIER
SET SCONTACT_NUMBER = 6765092654
WHERE ID_SUPLIER = 1; 

触发器被编译,但是当我试图触发它时,我得到一个错误'表正在改变'

我该如何解决? 我将不胜感激任何答案

1 个答案:

答案 0 :(得分:2)

您不需要触发器中的表引用。只需使用:new

Create or replace trigger inform
after update of scontact_number on SUPLIER
for each row
DECLARE 
    x SUPLIER.ssurname%TYPE;
BEGIN
    Select :new.SSURNAME
    into x
    from dual;

    dbms_output.put_line('New tel number for ' || x);
END;
/ 

或者更简单:

BEGIN
    dbms_output.put_line('New tel number for ' || :new.SSURNAME);
END;

不需要变量。