【发布时间】:2016-08-02 01:47:36
【问题描述】:
我有这样的触发器:
CREATE OR REPLACE TRIGGER orders_after_insert
AFTER INSERT
ON orders
FOR EACH ROW
DECLARE
v_type number;
BEGIN
SELECT type
INTO v_type
FROM orders
WHERE id = :new.parent_id;
-- do sth with v_type
END;
我收到如下错误消息:
ORA-04091: 表名发生变化,触发器/函数可能看不到它
我没有更新 orders 表中的任何行,那么有什么解决方法吗? 我只需要选择代表新记录父级的行类型,并在更新另一个表时使用此值。
【问题讨论】:
-
为什么要在触发器中这样做;插入不能自己提供正确的类型,如果需要,查询表本身吗?
-
这是预期的行为。请阅读其他discussion 以了解如何避免错误。