Eine "klassische" Falle der MySQL UPDATE-Anweisung

Eine "klassische" Falle der MySQL UPDATE-Anweisung

Jemand hat zum Beispiel folgendes Bild angefragt:

Das Problem lässt sich wie folgt zusammenfassen: Beim update eines Datensatzes in MySQL ist die Syntax korrekt, aber der Datensatz wird nicht aktualisiert...

Als ich zum ersten Mal auf dieses Problem stieß, nahm ich diese Anweisung und führte sie direkt in der Testbibliothek aus. Ich stellte fest, dass es tatsächlich ein Problem gab, aber es unterschied sich immer noch von der Entwicklungsbeschreibung. Hier verwende ich Testdaten, um es zu simulieren:

1. Problematische SQL-Anweisungen

Der Datensatz nach der Ausführung lautet:

Wie Sie sehen, ist das Ergebnis nicht, wie der Entwickler sagte, „es scheint keine Wirkung zu haben“, sondern es hat tatsächlich eine Wirkung:

Warum?

Es scheint, dass es kein Problem mit der Syntax gibt. Ich habe die Update-Syntax im offiziellen MySQL-Dokument nachgeschlagen:

Als klar wurde, dass das Format von assignment_list eine durch Kommas getrennte Liste von col_name=value ist, war plötzlich klar, dass die vom Entwickler gewünschte Aktualisierungsanweisung für mehrere Felder folgendermaßen geschrieben werden sollte:

Gehen Sie zurück und versuchen Sie es erneut

Und tatsächlich habe ich dieses Mal das gewünschte Ergebnis erzielt!

Zusammenfassung: Wenn Sie in einer UPDATE Anweisung mehrere Felder aktualisieren möchten, können Sie zwischen den Feldern kein „AND“ verwenden, sondern müssen sie durch Kommas trennen.

Nachtrag: Als ich später etwas Zeit hatte, habe ich zurückgeblickt und mich gefragt, warum das seltsame Ergebnis owner_code=0 “ erschien, als sie durch „AND“ getrennt wurden. Nach vielen Versuchen habe ich Folgendes herausgefunden:

ist gleichbedeutend mit:

Und ( '43212' and owner_name='李四' ) ist ein logischer Ausdruck und es ist nicht schwer zu erkennen, owner_name nicht 'Eigentümername' ist. Daher ist das Ergebnis dieses logischen Ausdrucks falsch, was in MySQL 0 entspricht!

Dies ist das Ende dieses Artikels über eine „klassische“ Falle der MySQL UPDATE -Anweisung. Weitere relevante MySQL UPDATE Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Praktisches MySQL + PostgreSQL Batch-Insert-Update insertOrUpdate
  • Unterschied zwischen MySQL-Update-Set und und
  • Nicht standardmäßiger Implementierungscode für die MySQL UPDATE-Anweisung
  • MySQL-Update-Fall Update-Feldwert ist keine feste Operation
  • Zusammenfassung der gemeinsamen Updatemethode für MySQL-Updates mehrerer Tabellen
  • Erläuterung der MySQL-Transaktionsauswahl für die Aktualisierung und Datenkonsistenzverarbeitung

<<:  Docker-Installations- und Konfigurationsschritte für MySQL

>>:  CSS-Beispielcode zum Erzielen eines kreisförmigen Fortschrittsbalkeneffekts mit Farbverlauf

Artikel empfehlen

So verwenden Sie das MySQL-Limit und lösen das Problem großer Paging-Aufgaben

Vorwort Wenn wir in der täglichen Entwicklung MyS...

Teilen Sie 9 Linux Shell Scripting Tipps für die Praxis und Interviews

Vorsichtsmaßnahmen 1) Interpreter am Anfang hinzu...

Lösung für den ONLY_FULL_GROUP_BY-Fehler in Mysql5.7 und höher

Während des jüngsten Entwicklungsprozesses handel...

Details zur Verwendung von „order by“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

Detaillierter Prozess der NTP-Serverkonfiguration unter Linux

Inhaltsverzeichnis 1. Umgebungskonfiguration 1.NT...

MySQL Flush-List und Flushing-Mechanismus für Dirty Pages

1. Überprüfung Der Pufferpool wird nach dem Start...

JavaScript-Methode zum Erkennen des Dateityps

Inhaltsverzeichnis 1. So zeigen Sie die Binärdate...

MySQL-Index für Anfänger

Vorwort Da die wichtigste Datenstruktur im MySQL-...

js, um einen einfachen Lupeneffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Ubuntu-Installations-Grafiktreiber und CUDA-Tutorial

Inhaltsverzeichnis 1. Deinstallieren Sie den Orig...

VMware virtuelle Maschine installieren CentOS 8 (1905) System-Tutorial-Diagramm

Die weltberühmte virtuelle Maschinensoftware VMwa...

Zusammenfassung der Verwendung von Linux-SFTP-Befehlen

sftp ist die Abkürzung für Secure File Transfer P...