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

Kennen Sie die häufigsten MySQL-Designfehler?

Dank der Entwicklung des Internets können wir die...

Erste Schritte mit GDB unter Linux

Vorwort gdb ist ein sehr nützliches Debugging-Too...

So verwenden Sie Echarts zum Visualisieren von Komponenten in Vue

Offizielle Website-Adresse der Echarts-Komponente...

Praktische Lösung für die Bereitstellung von Prometheus-Containern

Umfeld Hostname IP-Adresse Aufschlag Prometheus 1...

Erstellen eines sekundären Menüs mit JavaScript

In diesem Artikelbeispiel wird der spezifische Ja...

Zusammenfassung der sieben MySQL JOIN-Typen

Bevor wir beginnen, erstellen wir zwei Tabellen, ...

Reines CSS, um coole Neonlichteffekte zu erzielen (mit Demo)

Ich habe kürzlich die Tutorial-Reihe zu CSS-Anima...

Docker installiert und führt den RabbitMQ-Beispielcode aus

Ziehen Sie das Bild: [mall@VM_0_7_centos ~]$ sudo...

Unterschiede zwischen diesem Schlüsselwort in NodeJS und Browsern

Vorwort Jeder, der JavaScript gelernt hat, muss s...