我是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;
触发器被编译,但是当我试图触发它时,我得到一个错误'表正在改变'
我该如何解决? 我将不胜感激任何答案
答案 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;
不需要变量。