【发布时间】:2016-06-07 22:19:49
【问题描述】:
我已经编写了一个触发器来根据更新记录的值更新(之前)表中的记录
CREATE OR REPLACE TRIGGER CONTACTS_UPDATE_TRIGGER
BEFORE UPDATE ON CONTACTS
FOR EACH ROW
BEGIN
IF :NEW.CONTACT_TYPE= 'PRIMARY' THEN
UPDATE CONTACTS SET CONTACT_TYPE= NULL WHERE CONTACT_TYPE = 'PRIMARY' AND HOSPITAL_ID = :NEW.HOSPITAL_ID ;
END IF;
END;
但出现表变异错误。有没有其他方法可以根据oracle db中更新的行中的值来更新表中的其他行
【问题讨论】:
-
这通常会导致变异表错误。最简单的解决方案是将信息存储在另一个表中。
-
或者尝试将事务设置为 AUTONOMOUS 但非常不推荐,或者尝试将其转换为 STATEMENT LEVEL TRIGGER 而不是 ROW LEVEL Trigger
-
如果我将其设为语句级别,我是否能够访问正在更新的记录。因为我的更新查询基于更新记录中存在的条件(基于联系人类型当前记录)