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

Wyzwalacz ustaw wstawiane wartości wierszy na null

Przede wszystkim musisz zdecydować:

  • albo chcesz, aby wstawienie lub aktualizacja zakończyły się niepowodzeniem, gdy są wykonywane w niepożądanym czasie
  • lub chcesz, aby wstawienie lub aktualizacja zostały przetworzone, ale z kolumnami ustawionymi na null.

Nie możesz mieć obu.

Jeśli chcesz ustawić kolumny na NULL, powinno to być PRZED Wyzwalacz INSERT/UPDATE, dzięki czemu zmienione kolumny zostaną zapisane w tabeli. (W wyzwalaczu AFTER INSERT/UPDATE ustawienie pól na jakąś wartość nie miałoby żadnego efektu, ponieważ nie zostały zapisane.)

Następnie SET NEW.STAFFNO = NULL; nie jest prawidłowym PL/SQL, który musiałby być :NEW.STAFFNO := NULL; zamiast tego.

CREATE OR REPLACE TRIGGER hi
  BEFORE INSERT OR UPDATE OF class_time ON class
  FOR EACH ROW 
WHEN (new.class_time NOT BETWEEN '09:00' AND '18:00')
BEGIN 
  :new.staffno := null; 
  :new.class_day := null; 
  :new.class_type := null; 
  :new.roomnum := null;
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. Jak zatrzymać proces cofania Oracle?

  2. Przepełnienie liczbowe Solr

  3. Odejmowanie liczby dni od daty w PL/SQL

  4. Jak podzielić ciąg oddzielony przecinkami w Oracle

  5. Konwertuj datę ciągu na datę i godzinę w Oracle