【发布时间】:2020-07-15 11:23:05
【问题描述】:
下图显示错误。
我在 plsql 中创建了这个简单的触发器。
CREATE OR REPLACE TRIGGER TR6
BEFORE UPDATE ON EMPLOYEE
FOR EACH ROW
BEGIN
INSERT INTO PRAC14 (EMP_NO,EMP_NAME,EMP_SAL,DEPT_NO)
VALUES(:OLD.EMP_NO,:OLD.EMP_NAME,:OLD.EMP_SAL,:OLD.DEPT_NO);
END;
/
运行上面的代码后,它显示 TRIGGER CREATED。 然后当我更新我的员工表时,就像
UPDATE EMPLOYEE
SET EMP_SAL=3000
WHERE DEPT_NO=10
我收到此错误消息
ORA-04098:触发器“Username.TR”无效,重新验证失败。我使用的是 Oracle 数据库 10g 快捷版。
【问题讨论】:
-
触发器已创建,但处于INVALID状态,无法执行。你必须修改和更正它。代码中一定有某种错误(抱歉,我没有任何 Oracle 来验证您的代码)。
-
你的第二次推荐是错误的,@David。
:new.old.emp_no会是什么? -
我已经提到了:OLD.attribute_name 伪记录名称,那么为什么我必须包含:new.OLD.attribute_name??
-
完全正确的小脚。谢谢。
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
标签: plsql database-trigger dml oracle-xe