Gå til innhold

[LØST] Trigger problem i Oracle


Anbefalte innlegg

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 av seigmann
Lenke til kommentar
Videoannonse
Annonse

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 av seigmann
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...