Bei der Arbeit mit Datenbanken ist es oft wünschenswert, vorhandene Datensätze zu aktualisieren, wenn versucht wird, neue mit widersprüchlichen eindeutigen Schlüsseln einzufügen . Hier kommt die Klausel „ON DUPLICATE KEY UPDATE“ zum Einsatz.
Die Situation
Angenommen, Sie haben eine Tabelle mit einem eindeutigen Index für das Feld „id“. und Sie möchten einen neuen Datensatz einfügen und gleichzeitig sicherstellen, dass der entsprechende Datensatz aktualisiert wird, wenn die ID bereits vorhanden ist.
Konventionell Ansatz
Der herkömmliche Ansatz beinhaltet die Angabe aller Feldwerte in der UPDATE-Klausel, wie unten gezeigt:
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;
Dieser Ansatz funktioniert gut, kann aber bei großen Daten sehr ausführlich werden Anzahl der Spalten.
Kurze Alternative
Um die UPDATE-Klausel zu vereinfachen, können Sie verwenden das Schlüsselwort „VALUES“, um die neuen Werte für die aktualisierten Felder anzugeben. Dadurch entfällt die Notwendigkeit, die Spaltennamen zu wiederholen:
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);
Dieser Ansatz ist prägnanter und erzielt immer noch das gleiche Ergebnis.
Zuletzt eingefügte ID abrufen
Wenn Sie die ID des neu eingefügten oder aktualisierten Datensatzes abrufen müssen, können Sie die Backend-spezifische Methode verwenden, die von Ihrer Datenbank oder Ihrem Framework bereitgestellt wird. In LuaSQL können Sie beispielsweise die Funktion „conn:getlastautoid()“ verwenden, um die letzte automatisch generierte ID abzurufen.
Das obige ist der detaillierte Inhalt vonWie kann ich vorhandene Datensätze beim Einfügen mit widersprüchlichen eindeutigen Schlüsseln präzise aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!