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

Oracle Trigger Indsæt/opdatering

Jeg vil foreslå, at du specificerer udløseren for hver række. Jeg finder disse meget nemmere.

Du kan foretage en optælling for at se, om MovieStar.Name værdi findes allerede, og indsæt derefter, hvis den ikke gør det; det svarer til den tilgang, du har ovenfor. Dette vil mislykkes, hvis en anden bruger indsætter filmstjernen mellem det tidspunkt, du tjekker, og det tidspunkt, du indsætter, men det er sandsynligvis godt nok til en klasseopgave. Der er accepterede tilgange uden fejl til dette, men du har muligvis ikke dækket dem i klassen endnu.

Prøv noget som dette; det inkorporerer sandsynligvis alt, hvad du har dækket i klassen indtil videre:

CREATE OR REPLACE TRIGGER TestTrig
AFTER UPDATE OR INSERT ON STARSIN
FOR EACH ROW
DECLARE
  movieStarCount NUMBER;
BEGIN
  SELECT COUNT(*) INTO movieStarCount
    FROM MovieStar
    WHERE Name = :NEW.StarName;
  IF movieStarCount = 0 THEN
    INSERT INTO MovieStar (Name) VALUES (:NEW.StarName);
  END IF;
END;



  1. Sådan får du kategorier og underkategorier Query Builder i Laravel

  2. SQLAlchemy - bulk insert ignore:Duplicate entry

  3. Kohana 3.1.4:Database_Exception [ 2 ]:mysql_connect():Adgang nægtet

  4. Hvordan kan jeg få en liste over alle funktioner gemt i databasen for et bestemt skema i PostgreSQL?