因此,我创建了一个触发器,如果它为空,它将更新表中的数据。
CREATE OR REPLACE TRIGGER "XDA.GUID"
AFTER INSERT ON "TEST_GUID"
FOR EACH ROW
BEGIN
IF :NEW.GUID IS NULL THEN
UPDATE "TEST_GUID"
SET GUID = SYS_GUID()
WHERE ID = :NEW.ID;
ROLLBACK;
END IF;
END;
我需要更新相同的表插入后执行该表。
现在我在努力表演
INSERT INTO TEST_GUID (ID, GUID)
VALUES (2, '');
那我就低于误差了。
Error starting at line : 2 in command -
INSERT INTO TEST_GUID (ID, GUID)
VALUES (2, '')
Error report -
ORA-04091: table SYSTEM.TEST_GUID is mutating, trigger/function may not see it
ORA-06512: at "SYSTEM.XDA.GUID", line 3
ORA-04088: error during execution of trigger 'SYSTEM.XDA.GUID'
请提出解决方案。
2条答案
按热度按时间5us2dqdw1#
只是
顺便问一句,你为什么要把它倒回去?那么那个扳机就一点用也没有了。
qltillow2#
您可以用途:
仅对
NULL
值运行触发器。(* 注意:在Oracle中,''
和NULL
是相同的。fiddle