Notieren Sie eine Falle bei der Aktualisierung der MySQL-Update-Anweisung

Notieren Sie eine Falle bei der Aktualisierung der MySQL-Update-Anweisung

Hintergrund

Kürzlich habe ich während eines Onlinevorgangs eine DML-Anweisung ausgeführt. Ich dachte, sie sei narrensicher, aber die Anwendung meldete, dass sie nicht aktualisiert wurde und die Daten unverändert blieben. Nach einer Untersuchung stellte ich fest, dass ich die Anweisung falsch geschrieben hatte, was dazu führte, dass das Ergebnis der Aktualisierungsanweisung nicht meinen Erwartungen entsprach.

Nachinszenierung

Erstellen Sie zur Vereinfachung der Demonstration eine Benutzertabelle und fügen Sie fünf Datensätze gleichzeitig ein.

Tabelle Benutzer erstellen(
id int(12) Kommentar 'Benutzer-Primärschlüssel-ID',
name varchar(36) comment 'Benutzername',
Alter int(12) Kommentar 'Alter');

in Benutzerwerte einfügen (1, ‚eins‘, 11), (2, ‚zwei‘, 12), (3, ‚drei‘, 13), (4, ‚vier‘, 15), (5, ‚fünf‘, 15);

Nach Abschluss der Ausführung lauten die Daten in der Benutzertabelle wie folgt:

+------+-------+------+
| ID | Name | Alter |
+------+-------+------+
| 1 | eins | 11 |
| 2 | zwei | 12 |
| 3 | drei | 13 |
| 4 | vier | 15 |
| 5 | fünf | 15 |
+------+-------+------+

Jetzt muss ich alle Altersangaben auf 10 und alle Benutzernamen auf „Benutzer“ ändern. Vorausgesetzt, dieser Vorgang ist sinnvoll, lautet die DML-Anweisung, die ich an den Betrieb und die Wartung übermittle, wie folgt:

Benutzer aktualisieren, Alter auf 10 und Name auf ,Benutzer‘ setzen;

Wenn ich die Benutzertabelle aktualisiere, sehe ich, dass alle Daten in der Tabelle nach der Ausführung der Update-Anweisung wie folgt lauten:

+------+-------+------+
| ID | Name | Alter |
+------+-------+------+
| 1 | eins | 0 |
| 2 | zwei | 0 |
| 3 | drei | 0 |
| 4 | vier | 0 |
| 5 | fünf | 0 |
+------+-------+------+

Es geschah etwas Magisches. Das Altersfeld wurde vollständig auf 0 aktualisiert, während das Namensfeld überhaupt nicht geändert wurde!

Ursachen und Korrekturen

Die Fehlerursache ist eigentlich ganz einfach: Die Update-Anweisung ist falsch geschrieben. Die Syntax der Update-Anweisung in MySQL lautet

UPDATE Tabellenname
SETZEN Sie Spalte1=Wert1, Spalte2=Wert2, …
WO einige_Spalte=ein_Wert;
```sql

Wenn mehrere Felder aktualisiert werden, sollten benachbarte Felder durch Kommas statt durch „und“ getrennt werden. Wenn die Update-Anweisung „und“ als Trennzeichen zwischen mehreren Feldern verwendet, wie ich es zu Beginn bei Betrieb und Wartung dargelegt habe, wird diese Update-Anweisung schließlich zu „SQL
Benutzer aktualisieren, Alter = (10 und Name = "Benutzer");

Als Beurteilungsanweisung mit einem booleschen Rückgabewert wird (10 und Name='Benutzer') auf 1 oder 0 abgebildet. Es besteht eine Wahrscheinlichkeit von 99,999 %, dass die erste aktualisierte Variable mit falschen Daten aktualisiert wird.

Die korrekte Update-Anweisung sollte lauten

Benutzer aktualisieren, Alter = 10, Name = "Benutzer" festlegen;

Lektion

Bevor Sie DML-Anweisungen übermitteln, probieren Sie die grundlegende SQL-Syntax in einer Testumgebung aus, um sicherzustellen, dass Sie sie richtig in Erinnerung haben.

Zusammenfassung

Die Syntax der Update-Anweisung in MySQL lautet

UPDATE Tabellenname
SETZEN Sie Spalte1=Wert1, Spalte2=Wert2, …
WO einige_Spalte=ein_Wert;

Oben sind die Einzelheiten einer Falle bei der Verwendung der MySQL-Update-Anweisung aufgeführt. Weitere Informationen zu MySQL-Update-Anweisungen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Zusammenfassung der MySQL-Cross-Table-Update-SQL-Anweisung für Multi-Table-Update
  • Tutorial zum Anzeigen von Ausführungsanweisungen und Aktualisierungsprotokollen in Echtzeit über MySQL-Protokolle
  • Verwendung der SQL UPDATE-Aktualisierungsanweisung (einzelne und mehrere Spalten)
  • Grundlegendes zu MySQL-Sperren basierend auf Update-SQL-Anweisungen
  • Java Reflection JavaBean-Objekte generieren automatisch Einfüge-, Aktualisierungs-, Lösch- und Abfrage-SQL-Anweisungsvorgänge
  • Implementierung des Update-Sets aus der Verwendung in der SQL-Update-Anweisung
  • Analyse des Ausführungsprozesses einer SQL-Update-Anweisung

<<:  Einführung in HTML DOM_PowerNode Java Academy

>>:  Lösung für gelegentliche Abstürze des Positionierungs-Hintergrunddienstes unter Linux

Artikel empfehlen

Detaillierte Erklärung und Zusammenfassung der URL zur Datenbankverbindung

Detaillierte Erklärung und Zusammenfassung der UR...

JavaScript zum Erzielen eines Taobao-Produktbild-Umschalteffekts

JavaScript-Umschalteffekt für Bekleidungsalben (ä...

Detaillierte Analyse mehrerer Situationen, in denen MySQL-Indizes fehlschlagen

1. Führende Fuzzy-Abfragen können keinen Index ve...

VUE+Canvas implementiert das Spiel God of Wealth und erhält Barren

Willkommen zur vorherigen Canvas-Spielserie: 《VUE...

Probleme bei der Verwendung der Rich-Text-Bearbeitung mit Wangeditor in Vue

wangEditor ist ein webbasierter Rich-Text-Editor,...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.19 (Win10)

Detailliertes Tutorial zum Herunterladen und Inst...

Detaillierte Schritte zum Ändern gespeicherter MySQL-Prozeduren

Vorwort Bei der tatsächlichen Entwicklung werden ...

UTF-8- und GB2312-Webkodierung

In letzter Zeit haben mich viele Studenten zur Ko...

Datenbankübergreifende Assoziationsabfragemethode in MySQL

Geschäftsszenario: Abfragen von Tabellen in versc...

Beispiel für die Bereitstellung eines Django-Projekts mit Docker

Es ist auch sehr einfach, Django-Projekte mit Doc...

Beispiele für 4 Methoden zum Einfügen großer Datenmengen in MySQL

Vorwort Dieser Artikel stellt hauptsächlich 4 Met...

Implementierung der MySQL-Datendesensibilisierung (Telefonnummer, ID-Karte)

1. Erklärung zur Datendesensibilisierung Bei den ...