oracle 触发器抛出 ora-04098

Posted

技术标签:

【中文标题】oracle 触发器抛出 ora-04098【英文标题】:oracle trigger throws ora-04098 【发布时间】:2012-03-09 21:08:29 【问题描述】:

寻求一些基本帮助,可能是代码中的一个错字。

我有以下几点:

create table scott.original(mystr varchar2(10))
insert into scott.original values('hi')
select * from scott.original

CREATE OR REPLACE TRIGGER scott.original_trigger
AFTER INSERT ON scott.original
FOR EACH ROW
BEGIN
    select 'deleting or updating' from dual
END;
/

insert into scott.original values('bye')

插入“再见”会引发错误 ora-04098,我在 oracle 中看不到问题,这是我第一次尝试在 oracle 中创建触发器时授予的。

【问题讨论】:

【参考方案1】:

PL/SQL 块中的任何SELECT 语句都需要选择数据INTO 某个变量。

CREATE OR REPLACE TRIGGER scott.original_trigger
AFTER INSERT ON scott.original
FOR EACH ROW
DECLARE
    l_variable VARCHAR2(100);
BEGIN
    select 'deleting or updating' 
      into l_variable
      from dual
END;
/

将是有效的语法。当然,这个触发器实际上并没有做任何事情,但我认为这是您计划稍后解决的问题。

【讨论】:

谢谢,是的,在将所有逻辑放入其中之前,我试图制作一个简单的触发器。现在效果很好

以上是关于oracle 触发器抛出 ora-04098的主要内容,如果未能解决你的问题,请参考以下文章

Oracle:新增用户登录提示“ORA-04098:触发器‘GD.ON_LOGON_TRIGGER’无效且未通过重新验证”

ORA -04098 触发器无效且未通过重新验证

ORA-04098: 简单触发器无效。为啥?

SQL 触发器错误 ORA-04098

捕获到 SQL 异常。错误是:ORA-04098:触发器无效并且重新验证失败

ORA-04098 trigger 'DBBJ.DB_EV_ALTER_ST_METADATA' is invalid and failed re-validation