Oracle AFTER INSERT触发器插入ZVIRE_SeznamZmen表时遇PLS-00049错误求助
解决AFTER INSERT触发器的PLS-00049错误
你的错误根源非常明确:触发器里引用了错误的绑定变量名。
原表ZVIRE的主键列是ID,但你在触发器中写了:NEW.ID_——这个ID_是目标表ZVIRE_SeznamZmen的列名,并非源表ZVIRE的列名,Oracle找不到这个绑定变量,因此抛出了PLS-00049错误。
另外补充说明:ZVIRE_SeznamZmen的ID_是主键,直接用:NEW.ID作为它的值是可行的,因为原表ZVIRE的ID本身是主键,不会出现重复值,能满足目标表主键的唯一性要求。
修正后的触发器代码
create trigger ZvireInsert AFTER insert on ZVIRE for each row begin insert into ZVIRE_SeznamZmen(ID_, NAZEV, DRUH, JMENO, ZMENA_DRUH, ZMENA_DATUM) VALUES(:NEW.ID, :NEW.NAZEV, :NEW.DRUH, :NEW.JMENO, 'Insert', SYSTIMESTAMP); END; /
关键修正点
- 将
:NEW.ID_改为:NEW.ID,对应源表ZVIRE的主键列 - 保持其他
:NEW.xxx变量与源表列名一致,确保数据正确映射
执行这个修正后的触发器,再向ZVIRE表插入数据就能正常触发写入操作了。
内容的提问来源于stack exchange,提问作者SItypack
相关产品推荐
相关产品推荐

