sql >> Databasteknik >  >> RDS >> Oracle

Oracle Trigger Infoga/uppdatering

Jag skulle föreslå att du anger utlösande brand för varje rad. Jag tycker att dessa är mycket enklare.

Du kan räkna för att se om MovieStar.Name värdet finns redan och infoga sedan om det inte gör det; det liknar tillvägagångssättet du har ovan. Detta kommer att misslyckas om en annan användare infogar filmstjärnan mellan den tid du kontrollerar och den tid du infogar, men det är förmodligen tillräckligt bra för en klassuppgift. Det finns accepterade metoder utan misslyckande för detta, men du kanske inte har täckt dem i klassen ännu.

Prova något sånt här; den innehåller förmodligen allt du har tagit upp i klassen hittills:

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. MySQL:jämförelse av heltalsvärde och strängfält med index

  2. MySQL Workbench:Kan inte ansluta till MySQL-servern på 127.0.0.1' (10061) fel

  3. Hur kan jag skriva SQL i Oracle i mitt fall?

  4. Exempel på att konvertera "datum" till "datetimeoffset" i SQL Server (T-SQL)