MySql Error: Can ' T update Tabelle in der stored function/trigger

Ich bin mit MySQL und der Engine InnoDB. Ich habe eine SQL-Tabelle (vereinfacht) mit 4 Spalten, wie Sie in diesem Bild sehen kann :

MySql Error: Can ' T update Tabelle in der stored function/trigger

Wenn der Staat von einer Nachfrage werden "Getan" ich möchte, dass seine Priorität auf null und alle Anforderungen mit den oben genannten Prioritäten erniedrigt.

Zum Beispiel, wenn die zweite Forderung : "Brot" ist "Fertig", seine Priorität auf null gesetzt werden und ich möchte, dass "Butter" haben eine Priorität von 2, und "Stau" eine Priorität von 3.

Habe ich diesen trigger :

DELIMITER |
CREATE TRIGGER modify_priority_trigger BEFORE UPDATE ON your_table
FOR EACH ROW 
begin
    if NEW.State= 'Done'
    then
       update your_table
       set priority = priority - 1
       where priority is not null
       and priority > NEW.priority;

       set NEW.priority = NULL;
    end if;
end
|
delimiter ;

Aber ich habe eine Fehlermeldung, wenn ich das Bearbeiten einer Zeile aus einem Status von "In Bearbeitung" in "Fertig".

#1442 - Kann nicht aktualisiert Tabelle "Nachfrage" in stored function/trigger, da es bereits verwendet von Anweisung, die aufgerufen wird diese gespeichert
Funktion/trigger.

Habe ich mich für diesen Fehler im Internet, aber es ist das erste mal, dass ich SQL-trigger, so dass ich noch nicht gelingt, mein problem beheben.
Vielen Dank für deine Hilfe.

Sie sollten nicht update einer anderen Zeile der gleichen Tabelle, aber die Zeile gerade geprüft, weil es auslösen wird der Auslöser ...
Eine Art Endlosschleife ? Wie konnte ich machen was ich will damit ?
Sie könnte verwenden Sie eine gespeicherte Prozedur zum aktualisieren des Status und kümmern sich um die sonstigen Auswirkungen dieser änderung. Bitte beachten Sie, dass Sie nicht verwenden können, ein solches Verfahren in einem update-trigger zu.

InformationsquelleAutor JeanBlaguin | 2014-08-14

Schreibe einen Kommentar