我觉得这是甲骨文不想让我做的那些“如果你小心你就可以做到”的场景之一。
我的问题是我有一个配置表,我想通过触发器启用继承。考虑一个具有 SUPERVISOR ID 列的 Employee 表,如果 ID 更改,则“继承”的 SUPERVISOR NAME 会自行填充。
我想做一个简单的自我查找,以在 INS/UPD 时从另一行捕获一个值。但甲骨文拒绝作为变异触发器错误。
我的代码本质上是:
TRIGGER UPD_CHILD_RECORD
BEFORE INSERT OR UPDATE
ON MYSCHEMA.FAKE_EMPLOYEE
FOR EACH ROW
WHEN (NEW.SUPERVISOR_ID IS NOT NULL)
BEGIN
IF INSERTING OR UPDATING
THEN
:NEW.SUPERVISOR_NAME = (
SELECT MAX(NAME)
FROM MYSCHEMA.FAKE_EMPLOYEE
WHERE EMPLOYEE_ID = :NEW.SUPERVISOR_ID
);
END IF;
END UPD_CHILD_RECORD
;
谢谢。