Logic hiện tại của bạn tiếp tục tự kích hoạt trình kích hoạt trên mỗi INSERT bên trong nó!
Vì vậy, có lẽ bạn tìm INSTEAD OF
kích hoạt bằng CHẾ ĐỘ XEM
create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword
Nó giống như, thay vì chèn thực tế trên chế độ xem, hãy làm những gì tôi nói trong logic kích hoạt của mình!
Xem:
CREATE VIEW MYVIEW AS
SELECT
LISTAGG(keyword,',') WITHIN GROUP (ORDER BY seq) as keyword,
some_code
FROM Keyword
GROUP BY some_code;
Trình kích hoạ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;