sql >> Database teknologi >  >> RDS >> Oracle

det maksimale antal rekursive SQL-niveauer (50) er overskredet

Du laver en "før indsættelse"-trigger. I en sådan trigger indsætter du ikke i den samme tabel - ellers kan du få en uendelig løkke. Tildel blot variabelværdien:

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 ;

Når triggeren er færdig, vil den indsætte de rigtige værdier fra new variabel.

Lad mig bare sige, at sekvenser eksisterer af en grund, og du bør bruge dem til dette formål. At forsøge at efterligne deres funktionalitet vil sandsynligvis føre til fejl.



  1. Hvordan bruger jeg Psycopg2's LoggingConnection?

  2. Ulovligt forsøg på at kortlægge en ikke-samling som en @OneToMany, @ManyToMany eller @CollectionOfElements

  3. Hvordan læser man indholdet af en .sql-fil ind i et R-script for at køre en forespørgsel?

  4. timeout periode udløb. alle poolede forbindelser var i brug og maksimal poolstørrelse nået