Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PLSQL - Masukkan pemicu yang menyebabkan loop rekursif

Logika Anda saat ini terus memicu pemicu itu sendiri pada setiap INSERT di dalamnya!

Jadi, Mungkin Anda mencari INSTEAD OF pemicu menggunakan VIEW

create or replace TRIGGER trg_INSERTKEYWORDS
INSTEAD OF INSERT ON Keyword

Ini seperti, alih-alih menyisipkan tampilan yang sebenarnya, lakukan apa yang saya katakan dalam logika pemicu saya!

Tampilan:

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

Pemicunya:

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-02270:tidak ada kunci unik atau kunci utama yang cocok untuk daftar kolom ini

  2. 2 Cara Memformat Angka dengan Nol Awal di Oracle

  3. Menggabungkan dua baris menjadi satu saat mengganti nilai nol

  4. Bagaimana cara mengatasi ORA-00939:terlalu banyak argumen untuk kesalahan fungsi?

  5. Konversi Int32 ke nomor Oracle (5) dengan EF4