sql >> Databasteknik >  >> RDS >> Oracle

Trigger ställ in infoga radvärden till null

Först och främst måste du bestämma dig:

  • antingen du vill att infogningen eller uppdateringen ska misslyckas när den görs vid oönskad tid
  • eller du vill att infogningen eller uppdateringen ska bearbetas, men med kolumnerna inställda på null då.

Du kan inte ha båda.

Om du vill ställa in kolumnerna till NULL, bör detta vara ett FÖRE INSERT/UPDATE trigger, så att de ändrade kolumnerna skrivs till tabellen. (Om du ställer in fälten till något värde i en trigger EFTER INSERT/UPPDATERING skulle det inte ha någon effekt, eftersom de inte skrivs.)

Sedan SET NEW.STAFFNO = NULL; är ingen giltig PL/SQL, det måste vara :NEW.STAFFNO := NULL; istället.

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. Analysera XML till SQL Server

  2. cx_Oracle.DatabaseError:ORA-12170:TNS:Timeout för anslutning inträffade

  3. Oracle dokumentation

  4. hur man lagrar lösenordssalt