Heim >Datenbank >MySQL-Tutorial >Wie kann ich die „ON DUPLICATE KEY UPDATE'-Klausel von MySQL effizient nutzen?
Effiziente Verwendung von „ON DUPLICATE KEY UPDATE“
Bei der Durchführung von Datenbankoperationen kommt es häufig zu doppelten Schlüsselszenarien. In solchen Fällen möchten Sie möglicherweise entweder eine neue Zeile einfügen oder eine vorhandene Zeile mit demselben Schlüssel aktualisieren. In diesem Artikel wird die Verwendung der Klausel „ON DUPLICATE KEY UPDATE“ in MySQL zur Behandlung doppelter Schlüssel untersucht.
Das Problem
Betrachten Sie die folgende MySQL-Abfrage:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8)
Die Feld-ID hat einen eindeutigen Index, was bedeutet, dass es keine doppelten ID-Werte geben kann. Wenn in der Datenbank bereits eine Zeile mit derselben ID vorhanden ist, möchten Sie diese aktualisieren, anstatt eine neue Zeile einzufügen. Allerdings kann die Neuangabe aller Feldwerte in der Ursache „ON DUPLICATE KEY UPDATE“ ineffizient und repetitiv sein.
Mögliche Lösungen
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8
Diese Methode wird jedoch nicht empfohlen, da sie mühsam und fehleranfällig sein kann, insbesondere bei Tabellen mit vielen Spalten.
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c), d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g)
Diese Syntax aktualisiert nur die Spalten, die in der Klausel „ON DUPLICATE KEY UPDATE“ angegeben sind .
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;
Zuletzt eingefügte ID abrufen
Die Funktion LAST_INSERT_ID() kann kann verwendet werden, um die ID der zuletzt eingefügten Zeile abzurufen. Die Methode zur Verwendung dieser Funktion kann je nach verwendeter Backend-App variieren. In LuaSQL ruft beispielsweise die Methode conn:getlastautoid() den Wert ab.
Das obige ist der detaillierte Inhalt vonWie kann ich die „ON DUPLICATE KEY UPDATE'-Klausel von MySQL effizient nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!