Проблема с таблицей мутаций, но я использую сложные триггеры и все та же проблема - PullRequest
0 голосов
/ 01 октября 2019

Итак, я хочу изменить информацию своей записи в базе данных, которая является информацией электронной почты, поэтому я сделал составной триггер, который сохраняет информацию в объекте базы данных, а затем назначает: NEW элементы
, но по-прежнему имеет проблему с мутациейэлементы, надеюсь, вы можете помочь мне

create or replace TRIGGER MAIL_OUTBOX 
FOR UPDATE OR INSERT ON MAIL_OUTBOX 
COMPOUND TRIGGER
TYPE mail IS RECORD
(v_Mail_Id VARCHAR2(200),
v_new_comment varchar2(200),
v_new_email varchar2(200),
v_new_cc varchar2(200),
replaced_cc  varchar2(200),
replaced_receiver varchar2(200));
objetoMail mail;

BEFORE EACH ROW IS
BEGIN

objetoMail.v_Mail_Id := :NEW.MAIL_OUTBOX_ID;
objetoMail.v_new_comment := :OLD.COMMENTS;
objetoMail.v_new_cc := :OLD.CC;
objetoMail.replaced_receiver := :OLD.RECEIVER;

DBMS_OUTPUT.PUT_LINE(objetoMail.v_new_comment); 

IF objetoMail.v_new_comment LIKE '%ORA-29279%' THEN
SELECT regexp_substr(objetoMail.v_new_comment,'<([^>]+)>',1,1,NULL,1) into objetoMail.v_new_email                          
objetoMail.v_new_comment := 'Receptor desconocido ' || objetoMail.v_new_email;
:NEW.COMMENTS := objetoMail.v_new_comment;



hselect REGEXP_REPLACE(objetoMail.v_new_cc, objetoMail.v_new_email, 'xxx@xxxxxx.com' )
into objetoMail.replaced_cc
from  MAIL_OUTBOX; 
:NEW.CC := objetoMail.replaced_cc; 
select REGEXP_REPLACE(objetoMail.replaced_receiver, objetoMail.v_new_email, 'xxx@xxxxxx.com' )
into objetoMail.replaced_receiver
from  MAIL_OUTBOX; 
:NEW.RECEIVER := objetoMail.replaced_receiver; 

END IF;
END BEFORE EACH ROW;
AFTER STATEMENT IS 
v_Mail_Id VARCHAR2(60);
BEGIN
MAIL_PROCESS(NULL, objetoMail.v_Mail_Id );
END AFTER STATEMENT;
END;
...