sql >> Databáze >  >> RDS >> Oracle

překročen maximální počet rekurzivních úrovní SQL (50).

Provádíte spouštění „před vložením“. V takovém spouštěči nevkládáte do stejné tabulky - jinak můžete získat nekonečnou smyčku. Stačí k proměnné přiřadit hodnotu:

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 ;

Po dokončení spouštění vloží správné hodnoty z new proměnná.

Dovolte mi říci, že sekvence existují z nějakého důvodu a měli byste je k tomuto účelu používat. Pokus o napodobení jejich funkčnosti pravděpodobně povede k chybám.



  1. Alternativa k RETURNING s INSERT...SELECT

  2. Jak definovat sloupec, který dokáže automatizovat psaní velkých písmen?

  3. VYBERTE id MAJÍCÍ maximální počet id

  4. Proč vám Oracle neřekne, KTERÁ tabulka nebo pohled neexistuje?