sql >> Databáze >  >> RDS >> Oracle

PLSQL - Iinsert ve spouštěči způsobující rekurzivní smyčku

Vaše současná logika neustále spouští spoušť při každém INSERT uvnitř ní!

Možná tedy hledáte INSTEAD OF spusťte pomocí VIEW

create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

Je to jako, namísto skutečné vložky na zobrazení, dělat to, co říkám ve své spouštěcí logice!

Zobrazit:

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

Spouštěč:

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. Získání NoSuchMethodError:javax.persistence.Table.indexes() při provádění dotazu JPA

  2. MySQL SET NAMES v horní části protokolu pomalých dotazů

  3. MySQL vytváří čas a aktualizuje časové razítko

  4. Jak exportovat seznam propojených tabulek do Excelu z Accessu 2016