sql >> Databasteknik >  >> RDS >> Oracle

PLSQL - Insert in trigger som orsakar rekursiv loop

Din nuvarande logik fortsätter att avfyra avtryckaren på varje INSERT inuti den!

Så du kanske letar efter en INSTEAD OF utlösa med en VIEW

create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

Det är som att istället för den faktiska inlagan som visas, gör vad jag säger i min triggerlogik!

Visa:

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

Utlösaren:

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. Få input från HTML-formuläret och lagra det i mysql genom Flask

  2. Oracle IN vs finns skillnad?

  3. MySQL:Är det möjligt att skapa en fråga som utvärderar data från olika poster?

  4. Få varaktighet som tidsstämpel skillnad för upprepade platsändringar