Heim > Datenbank > MySQL-Tutorial > Folgt die Auswertungsreihenfolge der SQL UPDATE-Anweisung einem Standard und wie gehen verschiedene Datenbanken damit um?

Folgt die Auswertungsreihenfolge der SQL UPDATE-Anweisung einem Standard und wie gehen verschiedene Datenbanken damit um?

Barbara Streisand
Freigeben: 2024-12-27 05:05:12
Original
839 Leute haben es durchsucht

Does SQL UPDATE Statement Evaluation Order Follow a Standard, and How Do Different Databases Handle It?

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;
Nach dem Login kopieren

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:

  • Oracle XE (10g)
  • PostgreSQL 8.4.2
  • SQLite 3.3.6
  • SQL Server 2016

Ein Andererseits setzen die folgenden Datenbanken tbl.p auf q 1:

  • Firebird 2.5
  • InterBase 2009
  • MySQL 5.0.77

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage