sql >> Database >  >> RDS >> Oracle

PLSQL - Iinsert in trigger die recursieve lus veroorzaakt

Je huidige logica blijft de trigger zelf activeren op elke INSERT erin!

Dus misschien zoekt u een INSTEAD OF trigger met behulp van een VIEW

create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

Het is alsof, in plaats van de daadwerkelijke invoeging die te zien is, doe wat ik zeg in mijn triggerlogica!

Bekijken:

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

De trigger:

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;


  1. Hoe de datum en tijd selecteren zonder de seconden in mysql?

  2. update gebruikerslijst in groep:UPDATE of DELETE + INSERT

  3. Groot aantal kolommen in MySQL-database

  4. PostgreSQL:42883 Operator bestaat niet:tijdstempel zonder tijdzone =tekst