Текущата ви логика продължава да задейства самия тригер при всяко 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;