Ich mache MySQL-Datenbank, wo ich Film Tabelle haben:Trigger-Logik verursacht Fehler
- id
- Titel
- Menge
- verfügbar
- Beschreibung
und c opy Tabelle mit Fremdschlüssel film_id:
- id
- film_id
Und jetzt habe ich nach DELETE-Trigger auf Kopie geschrieben:
UPDATE `film`
SET available = available - 1
WHERE OLD.film_id = id;
Und jetzt Ich möchte vor dem Löschen Trigger auf fil schreiben m, aufgrund Tatsache, dass der Film durch Kopie contrained so schreibe ich:
DELETE FROM copy WHERE copy.film_id = OLD.id;
Hier Fehler tritt auf:
aktualisieren Tabelle kann nicht 'Film' in gespeicherte Funktion/Trigger, weil es wird bereits von der Anweisung verwendet, die diese gespeicherte Funktion/diesen Trigger aufgerufen hat.
Ich möchte Film löschen -> löschen copy -> update Film (ERROR)
Wenn Sie einen Film löschen (dh eine Zeile in Film-Tabelle) im ersten Schritt, wie kann man den Film reocord aktualisieren (die das ist gelöscht) im dritten Schritt? Scheint nicht logisch. –
@DarshanMehta Wenn ich Film löschen möchte muss ich alle Kopien löschen wo copy.film_id = OLD.id, aber es löst auch ein Update auf Film aus und das verursacht Problem. –