seigmann Skrevet 8. november 2006 Skrevet 8. november 2006 (endret) Trenger et lite dytt i baken når det gjelder en liten trigger til en skoleoppgave (filmdatabase). Poenget: For hver ny film man legger til i Film tabellen skal statusen (et felt i film tabellen) endres til "nyhet". Denne trigger skal altså BARE kjøre på den siste insert settningen. CREATE OR REPLACE TRIGGER TR_NY_FILM AFTER INSERT ON FILM BEGIN UPDATE film SET status = 'Nyhet'; -- WHERE film.filmID = filmID; END; Hvordan får jeg gjort slik at den tar siste filmID? For nå forandrer den statusen til "nyhet" på ALLE filmene i tabellen. Endret 9. november 2006 av seigmann
roac Skrevet 8. november 2006 Skrevet 8. november 2006 Det er vel dette du leter etter? CREATE OR REPLACE TRIGGER TR_NY_FILM AFTER INSERT ON FILM BEGIN UPDATE film SET status = 'Nyhet' WHERE film.filmID = :NEW.filmID; END;
seigmann Skrevet 8. november 2006 Forfatter Skrevet 8. november 2006 (endret) Ja, tenkte litt på det også. Har prøvd litt forskjellige varianter. Men får feilmeldingen: Error: ORA-04082: NEW- eller OLD-referanser er ikke tillatt i triggere på tabellnivå Edit: fikset dette problemet ved å legge til "For each row" før BEGIN. MEN, da får jeg et nytt problem når jeg prøver å legge til en post i filmtabellen. insert into film values ('','Elling','4','10','50','2','98','')Error report: SQL Error: ORA-04091: tabellen FILM muteres, triggeren/funksjonen ser det kanskje ikke ORA-06512: ved "TR_NY_FILM", line 2 ORA-04088: feil ved utføring av triggeren 'TR_NY_FILM' Endret 8. november 2006 av seigmann
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå