关于sql:Oracle触发器ORA

您所在的位置:网站首页 oracle中创建触发器 关于sql:Oracle触发器ORA

关于sql:Oracle触发器ORA

#关于sql:Oracle触发器ORA| 来源: 网络整理| 查看: 265

我正在尝试在oracle 10g数据库中创建一个简单的触发器。 用于创建触发器的此脚本运行干净。

123456CREATE OR REPLACE TRIGGER newAlert AFTER INSERT OR UPDATE ON Alerts   BEGIN         INSERT INTO Users (userID, firstName, lastName, password) VALUES ('how', 'im', 'testing', 'this trigger')   END;           /

但是当我跑步时:

1INSERT INTO Alerts(observationID, dateSent, message, dateViewed) VALUES (3, CURRENT_TIMESTAMP, 'Alert: You have exceeded the Max Threshold', NULL);

激活触发器,我收到以下错误消息:

ORA-04098: trigger 'JMD.NEWALERT' is invalid and failed re-validation (0 rows affected)

我不知道是什么导致此错误。 您知道导致此错误的原因吗? 还是为什么会这样?

先感谢您!

-大卫

相关讨论 另外我已经运行了INSERT INTO Users (userID, firstName, lastName, password) VALUES (how, im, testing, this trigger),它工作正常。 Users和Alerts表的表结构是什么?

Oracle将尝试重新引用无效对象。在这里,触发器是无效的,并且每次您尝试插入一行时,它将尝试重新编译触发器,但失败,这将导致ORA-04098错误。

您可以select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'查看触发器实际遇到的错误以及为什么不进行编译。在这种情况下,您似乎在insert行的末尾缺少分号:

12INSERT INTO Users (userID, firstName, lastName, password) VALUES ('how', 'im', 'testing', 'this trigger')

所以做到:

1234567CREATE OR REPLACE TRIGGER newAlert AFTER INSERT OR UPDATE ON Alerts   BEGIN         INSERT INTO Users (userID, firstName, lastName, password)         VALUES ('how', 'im', 'testing', 'this trigger');   END;           /

如果在执行时收到编译警告,则可以使用show errors(如果您使用的是SQL * Plus或SQL Developer),或者再次查询user_errors。

当然,这假设您的Users表确实具有这些列名,并且它们都是varchar2 ...,但是想必您实际上会对触发器做一些更有趣的事情。

相关讨论 非常感谢! 作为一名Java开发人员,我特别为我的错误是缺少分号而感到尴尬。 哈哈 我不知道触发错误的select子句,不知道+1,您也可以在触发器定义上运行SHOW ERRORS TRIGGER trigger_name;来检查错误techonthenet.com/oracle/errors/ora04098.php

原因:尝试检索触发器以执行,但发现该触发器无效。这也意味着触发器的编译/授权失败。

行动:选项是解决编译/授权错误,禁用触发器,或删除触发器。

句法

123ALTER TRIGGER TRIGGER Name DISABLE; ALTER TRIGGER trigger_Name ENABLE;

在我的情况下,由于未创建序列而引发此错误。

1CREATE SEQUENCE  J.SOME_SEQ  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE ;



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3