首先使用sql%rowcount而不是sql%notfound 。 对于更新sql%notfound,alwasy为false。
其次,您的触发器是递归的。
触发器在表D2C_EVENT_GENERATION_BOM上
1.如果sql%rowcount = 0,则插入D2C_EVENT_GENERATION_BOM
2.触发器执行插入操作(从点1开始),仍然有sql%rowcount = 0,然后插入...
并将此模式重复50次。
要解决此问题,您必须通知下一个触发器中断递归。 最简单的方法是添加前缀并进行检查。
create or replace TRIGGER "BL_D2C_EVENT_GENERATION_BOM"
BEFORE INSERT
ON D2C_EVENT_GENERATION_BOM REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
if :NEW.vibki not like '-%' then
UPDATE D2C_EVENT_GENERATION_BOM SET vibki = :NEW.vibki, status = 'NEW', lastruntime = sysdate
WHERE vibki = :NEW.vibki;
IF ( sql%rowcount = 0 ) THEN
INSERT INTO D2C_EVENT_GENERATION_BOM (vibki,status,lastruntime)
VALUES ('-'||:NEW.vibki,'NEW