使用触发器显示更新了哪条记录

Show which record was updated by using trigger

我是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; 

触发器已编译,但当我尝试触发它时,出现错误 'table is mutating'

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

触发器中不需要 table 引用。只需使用 :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;

并且不需要变量。