SQL UPDATE-Auswertungsreihenfolge
In einer SQL UPDATE-Anweisung bestimmt die Auswertungsreihenfolge, ob nachfolgende Ausdrücke auf geänderten Werten basieren. In diesem Artikel wird die Auswertungsreihenfolge in der Abfrage untersucht:
UPDATE tbl SET q = q + 1, p = q;
MySQL-Auswertungsreihenfolge
In MySQL ist die Auswertungsreihenfolge „von links nach rechts“. Dies bedeutet, dass der Ausdruck „q 1“ bei der Zuordnung zu „p“ vor „q“ ausgewertet wird. Daher wird tbl.p auf den Wert von q gesetzt, bevor es inkrementiert wird.
SQL-Standard
Gemäß den SQL92-Spezifikationen „[Die Wertausdrücke] werden effektiv für jede Zeile von T ausgewertet, bevor eine Zeile von T aktualisiert wird. Diese Aussage ist jedoch nicht explizit klar.
Implementierungen und Verhalten
Trotz des Standards variieren Implementierungen in ihrer Bewertungsreihenfolge. Tests haben gezeigt, dass die folgenden Datenbanken tbl.p auf q setzen:
Ein Andererseits setzen die folgenden Datenbanken tbl.p auf q 1:
MySQL-Fehler und Dokumentation Update
MySQL hatte sich zuvor dem Mehrheitsverhalten widersetzt, es wurde jedoch ein Fehler gemeldet und die Dokumentation wurde aktualisiert, um die Auswertungsreihenfolge „von links nach rechts“ explizit wiederzugeben. Dieses Verhalten wird als Unterschied zu Standard-SQL markiert.
Das obige ist der detaillierte Inhalt vonFolgt die Auswertungsreihenfolge der SQL UPDATE-Anweisung einem Standard und wie gehen verschiedene Datenbanken damit um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!