Oracle
 sql >> база данни >  >> RDS >> Oracle

PLSQL - Вмъквам в тригера, предизвиквайки рекурсивен цикъл

Текущата ви логика продължава да задейства самия тригер при всяко INSERT в него!

Така че, може би търсите INSTEAD OF задейства с помощта на VIEW

create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

Това е като, вместо действителното вмъкване в изгледа, направете това, което казвам в моята логика на задействане!

Преглед:

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

Спусъкът:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Отстраняване на неизправности на Oracle - увиснал процес

  2. Oracle Apex:Създайте лента за напредък, когато чакате резултат

  3. Как да извлечете номера на седмицата в sql

  4. SQL Developer 4.1.2

  5. вмъкване на множество редове в Oracle SQL