尝试创建我的第一个oracle触发器

时间:2015-12-22 17:07:54

标签: oracle plsql triggers

我正在尝试创建一个触发器,在INSERT或UPDATE的记录中,TESTGROUP =='HSSAG'将为TESTGROUP'HSBEJ'创建该记录的副本.....并且当记录时为更新HSSAG,随后将更新相关的HSBEJ记录。

create or replace TRIGGER VAL_TESTTYPE_CLONING 
AFTER DELETE OR INSERT OR UPDATE OF TESTGROUP ON CLONING_TABLE 
FOR EACH ROW 
WHEN (new.TESTGROUP = 'HSSAG') 
BEGIN
  INSERT INTO CLONING_TABLE (TESTCOL, TESTGROUP) VALUES(:new.TESTCOL, 'HSBEJ');
END;

这是我尝试插入

时遇到的错误
INSERT INTO "CLMSDBA"."CLONING_TABLE" (TESTCOL, TESTGROUP) VALUES ('3', 'HSSAG')
ORA-04091: table CLMSDBA.CLONING_TABLE is mutating, trigger/function may not see it
ORA-06512: at "CLMSDBA.VAL_TESTTYPE_CLONING", line 2
ORA-04088: error during execution of trigger 'CLMSDBA.VAL_TESTTYPE_CLONING'
ORA-06512: at line 1


One error saving changes to table "CLMSDBA"."CLONING_TABLE":
Row 3: ORA-04091: table CLMSDBA.CLONING_TABLE is mutating, trigger/function may not see it
ORA-06512: at "CLMSDBA.VAL_TESTTYPE_CLONING", line 2
ORA-04088: error during execution of trigger 'CLMSDBA.VAL_TESTTYPE_CLONING'
ORA-06512: at line 1

1 个答案:

答案 0 :(得分:0)

  

我找到了一个改变触发器问题的非常好的解决方法。希望这个   帮助

Mutating trigger workaround