sql >> Database >  >> RDS >> Oracle

Trigger instellen rijwaarden invoegen op null

Allereerst moet je beslissen:

  • ofwel je wilt dat het invoegen of bijwerken mislukt wanneer het op een ongewenst tijdstip wordt gedaan
  • of je wilt dat de invoeging of update wordt verwerkt, maar dan met de kolommen op null.

Je kunt niet beide hebben.

Als u de kolommen op NULL wilt zetten, moet dit een BEFORE . zijn INSERT/UPDATE-trigger, zodat de gewijzigde kolommen naar de tabel worden geschreven. (In een AFTER INSERT/UPDATE-trigger zou het instellen van de velden op een bepaalde waarde geen enkel effect hebben, omdat ze niet zijn geschreven.)

Dan SET NEW.STAFFNO = NULL; is geen geldige PL/SQL, dat zou :NEW.STAFFNO := NULL; moeten zijn in plaats daarvan.

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. Waarschuwing:ocifetch() [function.ocifetch]:ORA-24374:definieer niet gedaan vóór ophalen of uitvoeren en ophalen

  2. vierkante haken van een string vervangen door de orakel REGEXP_REPLACE-functie

  3. Lezen van bestand naar variabele - Bash Script take2

  4. Wat zijn Resource#'s?