Oracle
 sql >> Database >  >> RDS >> Oracle

Trigger imposta i valori delle righe di inserimento su null

Prima di tutto devi decidere:

  • o vuoi che l'inserimento o l'aggiornamento non vada a buon fine quando viene eseguito in un momento indesiderato
  • o si desidera che l'inserimento o l'aggiornamento venga elaborato, ma con le colonne impostate su null.

Non puoi avere entrambi.

Nel caso in cui desideri impostare le colonne su NULL, questo dovrebbe essere un PRIMA INSERT/UPDATE trigger, in modo che le colonne modificate vengano scritte nella tabella. (In un trigger AFTER INSERT/UPDATE, l'impostazione dei campi su un valore non avrebbe alcun effetto, poiché non vengono scritti.)

Quindi SET NEW.STAFFNO = NULL; non è un PL/SQL valido, dovrebbe essere :NEW.STAFFNO := NULL; invece.

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;