我刚开始学习触发器。我想在插入测试后给用户一个通知'插入成功'。插入后oracle触发器打印
这是我的代码。
create table test (id number, name varchar2(30));
create trigger tr_test
after insert on test
for each row
begin
dbms_output.put_line('insert successfully');
end;
/
insert into test values(1, 'john');
而我得到的错误是这样的:
ERROR at line 1:
ORA-04091: table YUFENG.TEST is mutating, trigger/function may not see it
ORA-06512: at "YUFENG.TR_TEST", line 3
ORA-04088: error during execution of trigger 'YUFENG.TR_TEST'
任何人都可以指出错误,并告诉我如何修改密码?
对不起,我没有注意到有很多简单的错误,使查询无法运行。我的原始代码在触发器中声明变量,但我没有发布它。我想这可能就是我错误变异的原因。
CREATE or REPLACE TRIGGER TR_TEST
AFTER INSERT ON TEST
FOR EACH ROW
DECLARE a VARCHAR2(30);
BEGIN
SELECT ID INTO a FROM TEST WHERE ID=:NEW.ID;
DBMS_OUTPUT.PUT_LINE('insert successfully');
END;
/
2017-10-13
yufeng
+1
发布的代码中没有任何内容会导致触发器发生变异。显然,这不是你正在运行的代码,所以重要的是什么?这个网站上的突变表问题相当普遍。对ORA-04091的简单搜索可以返回数百个匹配结果。 –
+0
感谢您的回复。我的原始代码的问题可能与变异表问题相同。 –