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

jumlah maksimum level SQL rekursif (50) terlampaui

Anda melakukan pemicu "sebelum memasukkan". Dalam pemicu seperti itu, Anda tidak memasukkan ke dalam tabel yang sama -- jika tidak, Anda bisa mendapatkan loop tak terbatas. Tetapkan saja ke nilai variabel:

CREATE OR REPLACE TRIGGER trig_deptno2
BEFORE INSERT ON dept2
FOR EACH ROW
DECLARE v_deptno NUMBER(2) ;
BEGIN
    SELECT coalesce(MAX(deptno) + 1, 1) INTO :new.deptno
    FROM dept2 ;
END trig_deptno2 ;

Ketika pemicu selesai, itu akan menyisipkan nilai yang benar dari new variabel.

Izinkan saya mengatakan bahwa urutan ada karena suatu alasan, dan Anda harus menggunakannya untuk tujuan ini. Mencoba meniru fungsinya kemungkinan akan menyebabkan kesalahan.



  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-00937:Bukan fungsi grup grup tunggal - Kesalahan kueri

  2. Bagaimana Mengembalikan ResultSet dari Stored Procedure di Oracle?

  3. Apakah penggunaan SELECT COUNT(*) sebelum SELECT INTO lebih lambat daripada menggunakan Pengecualian?

  4. Tampilkan file pdf yang disimpan di disk lokal dengan di Oracle Forms 6i

  5. jenis koleksi lokal tidak diperbolehkan dalam pernyataan SQL