2016-11-24 3 views
1

DB: MySQLMySQL Trigger Fehler: 1.442

verwenden: MySQL Workbench

ich derzeit an einem Projekt für die Klasse arbeite, wo wir einen Flughafen-Website zu gestalten haben, in denen Benutzer anmelden können/registrieren und Karten kaufen für verschiedene Flüge angeboten. Nachdem ich einige Zeit an dem Projekt gearbeitet habe, wurde mir klar, dass mein Auslöser nicht funktioniert.

erhalte ich die Fehlermeldung: Error Code: 1442. Can't update table 'reservation' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

ich über diesen Fehler gestolpert, indem Sie versuchen eine Reservierung einzulegen, bevor das Formular für die Erstellung von Benutzern Tickets auszuwählen und zu kaufen. Ich habe mich gefragt, ob jemand einen Blick auf meine Datenbank werfen, den Befehlsgebrauch einfügen könnte und auch meinen Triggercode. Jede Hilfe würde sehr geschätzt werden, weil ich am witzigen Ende versuche, das stundenlang herauszufinden.

Befehl Einfügen: http://pastebin.com/tyBPWNDd

Entire DB und Auslöser in Frage: http://pastebin.com/BvUj1NdH

Gelöst: Dank an alle Helfer ich in der Lage war, mein Problem zu identifizieren, die rekursive Trigger verwendet wurde, wenn MySQL nicht unterstützt . Ich löste mein Problem, indem ich den rekursiven Code löschte und das Backend meiner Website das current_date-Set anstelle des Triggers behandelte. Ich werde den Fixed Trigger in Kürze veröffentlichen.

+0

Ein Trigger kann nicht die Tabelle ändern, die es ausgeführt hat. Sie müssen Ihre Logik neu anordnen, damit dies nicht geschieht. –

+0

@TimBiegeleisen Danke! Sie waren eine große Hilfe – Tonk

+0

Ich bin froh, Ihnen nützlich zu sein, aber vielleicht sollten Sie kommentieren, wie Sie das Problem gelöst haben, damit diese Frage für andere hilfreicher ist. –

Antwort

1

Ja, der Fehler ist selbsterklärend. Sie versuchen, eine rekursive Trigger zu erstellen, die nicht in MySQL unterstützt wird wie in geposteten Code

Create Trigger reservation_all 
    after insert on Reservation 
    for each row 
    begin 
     update Reservation 

prüfen MySQL Documentation auf gleiche für mehr infromation zu sehen. Zitiert von diesem

  • Stored functions cannot be used recursively.

  • A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

+0

Vielen Dank! Das macht jetzt sehr viel Sinn und ich kann nicht glauben, dass ich so etwas verpasst habe. Du bist eine große Hilfe Rahul. – Tonk