Итак, я хочу изменить информацию своей записи в базе данных, которая является информацией электронной почты, поэтому я сделал составной триггер, который сохраняет информацию в объекте базы данных, а затем назначает: 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;