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

Inserimento/aggiornamento di Oracle Trigger

Suggerirei di specificare il trigger fire per ogni riga. Trovo questi molto più facili.

Puoi fare un conteggio per vedere se il MovieStar.Name il valore esiste già e quindi inserire se non lo è; è simile all'approccio che hai sopra. Ciò fallirà se un altro utente inserisce la star del cinema tra il momento in cui controlli e il momento in cui inserisci, ma probabilmente è abbastanza buono per un compito in classe. Esistono approcci accettati per questo, ma potresti non averli ancora trattati in classe.

Prova qualcosa del genere; probabilmente incorpora tutto ciò che hai trattato in classe finora:

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;