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

Trigger sæt indsæt rækkeværdier til null

Først og fremmest skal du beslutte dig for:

  • enten du vil have indsættelsen eller opdateringen til at mislykkes, når den udføres på et uønsket tidspunkt
  • eller du ønsker, at indsættelsen eller opdateringen skal behandles, men med kolonnerne sat til null derefter.

Du kan ikke have begge dele.

Hvis du vil indstille kolonnerne til NULL, skal dette være en BEFORE INSERT/UPDATE trigger, så de ændrede kolonner bliver skrevet til tabellen. (I en AFTER INSERT/UPDATE-trigger vil indstilling af felterne til en eller anden værdi ikke have nogen effekt, fordi de ikke er skrevet.)

Derefter SET NEW.STAFFNO = NULL; er ingen gyldig PL/SQL, det skal være :NEW.STAFFNO := NULL; i stedet.

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. Er det muligt at bruge mysqli som databasedriver i Laravel?

  2. hvordan man får forskellige rækker med max værdi

  3. SQL returnerer 100 tilfældige rækker for hver alder

  4. SQL-forespørgsel som GROUP BY med OR-betingelse