我的问题是,我创建了一个触发器,用于检查SCOTT.BONUS.SALARY中的列是否已更新,并计算“多少”- raise并返回它。它说NEW.SAL应该被声明,但是如果它是一个列名,怎么能声明它呢??
CREATE OR REPLACE TRIGGER Raise
BEFORE DELETE OR INSERT OR UPDATE ON SCOTT.BONUS
FOR EACH ROW
WHEN (NEW.SAL > 0.1*OLD.SAL)
DECLARE
howmuch number;
BEGIN
howmuch := 0.1*NEW.SAL;
dbms_output.put_line('Bonus changed to 10% - : ' || howmuch);
END;
/````发布于 2020-01-31 10:38:35
您需要在触发器的body中使用:NEW,如下所示:
CREATE OR REPLACE TRIGGER Raise
BEFORE DELETE OR INSERT OR UPDATE ON SCOTT.BONUS
FOR EACH ROW
WHEN (NEW.SAL > 0.1*OLD.SAL)
DECLARE
howmuch number;
BEGIN
howmuch := 0.1 * :NEW.SAL; -- changes here
dbms_output.put_line('Bonus changed to 10% - : ' || howmuch);
END;
/干杯!!
https://stackoverflow.com/questions/59996302
复制相似问题