sql >> Database teknologi >  >> RDS >> Oracle

PLSQL - Indsæt i trigger, der forårsager rekursiv loop

Din nuværende logik bliver ved med at udløse selve triggeren på hver INSERT inde i den!

Så måske leder du efter en INSTEAD OF trigger ved hjælp af en VIEW

create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

Det er som om, i stedet for den faktiske indsats, der er synlig, gør, hvad jeg fortæller i min triggerlogik!

Vis:

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

Udløseren:

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. Find det rigtige kolonnenavn på et alias, der bruges i en visning?

  2. Hvordan importerer man nemt flere sql-filer til en MySQL-database?

  3. postgres registrerer gentagne mønstre af nuller

  4. Hvordan konverterer man denne forberedelseserklæring til at bruge pladsholdere i Wordpress $wpdb?