Oracle
 sql >> Baza danych >  >> RDS >> Oracle

przekroczono maksymalną liczbę rekurencyjnych poziomów SQL (50)

Wykonujesz wyzwalacz „przed wstawieniem”. W takim wyzwalaczu nie wstawiasz do tej samej tabeli — w przeciwnym razie możesz uzyskać nieskończoną pętlę. Po prostu przypisz do wartości zmiennej:

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 zakończeniu wyzwalacza wstawi właściwe wartości z new zmienna.

Powiem tylko, że sekwencje istnieją nie bez powodu i należy ich do tego celu używać. Próba naśladowania ich funkcjonalności może prowadzić do błędów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle PL/SQL jak obliczyć zakres adresów IP dla cidr IPv6

  2. Czy Oracle ma wbudowaną funkcję skrótu?

  3. Usługa Windows w .net nie może rozpoznać nazwy usługi tns

  4. Integracja ServiceNow z Oracle Identity Cloud Service (IDCS)

  5. Łączenie się z Oracle za pomocą ADO