Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

PLSQL - Chèn vào trình kích hoạt gây ra vòng lặp đệ quy

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA 03134 lỗi kết nối ODP.NET 12 (VS2012) với cơ sở dữ liệu Oracle 11

  2. Làm thế nào để gọi hàm Oracle hoặc thủ tục được lưu trữ bằng cách sử dụng khuôn khổ bền vững mùa xuân?

  3. Chạy mã sql với các biến trong cửa sổ mã Oracle SQL Developer

  4. Trở về từ Thế giới mở 2013

  5. plsql - cách trả về mảng kết hợp cho java