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’无效且未通过重新验证”
捕获到 SQL 异常。错误是:ORA-04098:触发器无效并且重新验证失败
ORA-04098 trigger 'DBBJ.DB_EV_ALTER_ST_METADATA' is invalid and failed re-validation