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 Docker-Compose zum Erstellen eines ELK-Clusters

Auf alle Orchestrierungsdateien und Konfiguration...

Reines js, um einen Schreibmaschineneffekt zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

MySQL erklärt das Prinzip und Beispiel zum Abrufen von Abfrageanweisungen

„explain“ wird verwendet, um Informationen zum Ab...

Schritte zur Installation von GRUB auf einem Linux-Server

So installieren Sie GRUB für Linux Server Sie kön...

Führen Sie die Schritte zum Upgrade von Nginx http auf https aus.

Der Unterschied zwischen http und https ist Bei m...

Detaillierte Erklärung zur Installation und Verwendung von Vue-Router

Inhaltsverzeichnis Installieren Grundlegende Konf...

Führen Sie die Schritte aus, um mit Samba Ordner in CentOS 7 freizugeben

Vorwort Samba ist eine kostenlose Software, die d...

js-Objekt, um einen Daten-Paging-Effekt zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

Beispiele für die Verwendung von HTML-Metadaten

Beispielverwendung Code kopieren Der Code lautet w...

Detaillierte Erklärung der neuen Erfahrung von Vite

Was ist Vite? (Es ist ein neues Spielzeug im Fron...

Grundlegendes Nutzungs-Tutorial zur IPTABLES-Firewall unter LINUX

Vorwort Für Produktions-VPS mit öffentlicher IP w...