【发布时间】:2018-07-26 12:53:26
【问题描述】:
学习触发器,并尝试执行一项基本任务,在我对另一个名为 xml_hours_load 的表执行插入语句后,我将单个数据条目插入名为 xml_hours_load_2 的表中。但是,在我尝试在 xml_hours_load 中插入语句后,我收到如下错误: *SQL 错误:ORA-04091:表 XML_HOURS_LOAD 正在变异,触发器/函数可能看不到它 ORA-06512:在“TEST_TRIGGER”,第 5 行 ORA-04088: 执行触发器 'TEST_TRIGGER' 期间出错 04091. 00000 - “表 %s.%s 正在变异,触发器/函数可能看不到它” 原因:触发器(或用户定义的 plsql 函数,在 这个语句)试图查看(或修改)一个表 正在被触发它的语句修改。
下面是我的触发代码和我的插入语句:
create or replace TRIGGER test_trigger
AFTER INSERT
ON xml_hours_load
FOR EACH ROW
DECLARE
varROW_ID Varchar(50);
BEGIN
SELECT row_id INTO varROW_ID
from xml_hours_load;
INSERT INTO xml_hours_load_2
VALUES(varROW_ID, '2', '3', '5', '6', 'hi');
END;
insert into xml_hours_load(product_number, code,
product_name, product_version, contact)
values('5', 'hello', 'no', '1', 'technical');
【问题讨论】:
-
不,那不是我的问题
-
您是否阅读了所有答案?您是否在提供的答案中阅读了有关触发器的文档?您的代码是错误的,因为您正在插入的同一个表中进行选择(没有任何过滤器),这是错误的根源。错误描述非常简单。 docs.oracle.com/cd/E11882_01/appdev.112/e25519/…