Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Maximale Anzahl rekursiver SQL-Ebenen (50) überschritten

Sie führen einen "Before Insert"-Trigger aus. Bei einem solchen Trigger fügen Sie nicht in dieselbe Tabelle ein – andernfalls können Sie eine Endlosschleife erhalten. Weisen Sie einfach der Variablen den Wert zu:

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 ;

Wenn der Trigger fertig ist, fügt er die richtigen Werte aus new ein Variable.

Lassen Sie mich nur sagen, dass Sequenzen aus einem bestimmten Grund existieren und Sie sie für diesen Zweck verwenden sollten. Der Versuch, ihre Funktionalität nachzuahmen, führt wahrscheinlich zu Fehlern.