检索新值时触发器在 PLSQL 中不起作用

Posted

技术标签:

【中文标题】检索新值时触发器在 PLSQL 中不起作用【英文标题】:Trigger not working in PLSQL while retrieving new value 【发布时间】:2021-05-27 11:31:05 【问题描述】:

我正在尝试创建一个触发器,将工资超过 1000 美元的员工的工资乘以 2,但它在下面显示了这个错误,这是代码。我仍在发现这个“新/旧”概念。但我不明白为什么我的触发器不起作用。有人知道为什么吗?

CREATE OR REPLACE TRIGGER MAJ
AFTER UPDATE on EMPLOYEES
FOR EACH ROW
begin
IF (:new.salary <1000) THEN
:new.salary:= :new.salary*2;
end;
/

【问题讨论】:

你没有END IF; 【参考方案1】:

您在代码中忘记了END IF -

CREATE OR REPLACE TRIGGER MAJ
AFTER UPDATE on EMPLOYEES
FOR EACH ROW
BEGIN
     IF (:new.salary <1000) THEN
        :new.salary := :new.salary*2;
     END IF;
END;
/

【讨论】:

谢谢,如果可以的话,我还有一个问题。由于我每 90 分钟只能发布 1 个问题,因此我现在基本上正在研究另一个功能。你知道为什么它不起作用吗?这是代码: CREATE OR REPLACE FUNCTION FN_DOUBLE (a number) RETURN number IS BEGIN a:=a*2;返回一个;结尾; / 您只需将参数列表从(a number) 替换为(a in out number)

以上是关于检索新值时触发器在 PLSQL 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

每行设置 new.column 的 PLSQL 触发器不起作用

PLSQL 触发器引发应用程序错误不起作用

为啥事件触发器在统一 2d 中不起作用?

引发错误在 MySQL 触发器中不起作用

触发方法在jQuery中不起作用

触发器在 SQL Server 的 BulkCopy 中不起作用