seigmann Skrevet 8. november 2006 Del 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 Lenke til kommentar
roac Skrevet 8. november 2006 Del 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; Lenke til kommentar
seigmann Skrevet 8. november 2006 Forfatter Del 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 Lenke til kommentar
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å