sql >> Database >  >> RDS >> Oracle

Oracle Trigger Invoegen/bijwerken

Ik stel voor om de trigger fire voor elke rij te specificeren. Ik vind deze een stuk makkelijker.

Je kunt tellen om te zien of de MovieStar.Name waarde bestaat al en voeg dan in als dat niet het geval is; dat is vergelijkbaar met de aanpak die je hierboven hebt. Dit zal mislukken als een andere gebruiker de filmster invoegt tussen de tijd dat je controleert en de tijd dat je invoegt, maar het is waarschijnlijk goed genoeg voor een klasopdracht. Er zijn geaccepteerde no-fail-benaderingen hiervoor, maar je hebt ze misschien nog niet in de klas behandeld.

Probeer zoiets als dit; het bevat waarschijnlijk alles wat je tot nu toe in de les hebt behandeld:

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. Php multi-dimensionale array van mysql resultaat

  2. Kan geen verbinding maken met Oracle vanuit een Windows-service (fout:ORA-12154:TNS:kan servicenaam niet omzetten (12154) )

  3. Query vergrendelt tabellen, kan dat proces niet beëindigen

  4. MySQL - Complexiteit van:SELECT COUNT(*) FROM MyTable;