Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

PLSQL - Iinsert no gatilho causando loop recursivo


Sua lógica atual continua disparando o gatilho em cada INSERT dentro dela!

Então, talvez você procure um INSTEAD OF acionar usando uma VIEW
create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

É como se, em vez da inserção real em exibição, faça o que eu digo na minha lógica de gatilho!

Visualizar:
CREATE VIEW MYVIEW AS 
SELECT
  LISTAGG(keyword,',') WITHIN GROUP (ORDER BY seq) as keyword,
  some_code
 FROM  Keyword
GROUP BY some_code;

O acionador:
create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON MYVIEW 
FOR EACH ROW
DECLARE
varKeyWordsStr VARCHAR2 (255) := 'Hello,How,are,you,keeping';
/* Isn't it keyWord from the inserted value ?? */
BEGIN
  FOR k IN (SELECT REGEXP_SUBSTR (varKeyWordsStr,'[^,]+',1,LEVEL) keyWord
             FROM DUAL
            CONNECT BY REGEXP_SUBSTR (varKeyWordsStr,'[^,]+',1,LEVEL)IS NOT NULL)
  LOOP
      INSERT INTO KEYWORD VALUES(seqKeyWord.NEXTVAL,k.keyWord,1000);
  END LOOP;
END;