之前,我将尝试使用触发器来避免在某些情况下在表Products
删除一排。代码如下突变表中的触发器
CREATE TRIGGER trgPreventProductRemoval
BEFORE DELETE ON Products
FOR EACH ROW
BEGIN
DECLARE
l_custid INTEGER;
BEGIN
SELECT count(*) INTO l_custid FROM Orders WHERE product = :old.prodDescription ;
IF l_custid > 0 THEN
raise_application_error (-20100, 'You can not delete a product that has active orders!');
END IF;
END;
END;
但是我得到的错误:table ORDERS is mutating, trigger/function may not see it
。
我该如何解决?
编辑-SOLUTION:我已经接受了下面,因为它是“政治正确”的解决方案。由于某些“限制”,我无法使用它并最终找到了不同的解决方法。看到我单独发布的解决方案。
的可能重复的[ORA-04091:表\ [嗒嗒\]被突变,触发/功能可能无法看到它](http://stackoverflow.com/questions/375968/ora-04091-table-blah-is -mutating-trigger-function-may-not-see-it) – Sathya 2012-01-03 04:15:10