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

Wyzwalacz, który wstawia wiersz do tabeli dziennika podczas wstawiania lub usuwania w tabeli osób skompilowanej z błędami

Ponieważ nie zamieściłeś błędu, muszę zgadywać. Domyślam się, że problem polega na tym, że name nie jest prawidłowym identyfikatorem w tym kontekście. Musisz odwołać się do :new.name lub :old.name . :old.name będzie NULL na wstawce, podczas gdy :new.name będzie NULL na usunięcie, więc zakładam, że chcesz coś takiego

CREATE OR REPLACE TRIGGER add_del
  BEFORE INSERT OR DELETE ON persons
  FOR EACH ROW
BEGIN
  IF INSERTING THEN
    INSERT INTO logs (who, what) VALUES (:new.name, 'Insert into persons');
  ELSE
    INSERT INTO logs (who, what) VALUES (:old.name, 'Delete from persons');
  END IF;
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można wyprowadzić instrukcję SELECT z bloku PL/SQL?

  2. zwróć pojedynczy wiersz w procedurze składowanej na oracle

  3. Wyrocznia. Zapobieganie scalaniu podzapytania i warunków zapytania głównego

  4. UPPER() Funkcja w Oracle

  5. Wyjątek PDO nie jest zgłaszany w przypadku błędów wyzwalacza