Ich möchte Werte einfügen, und wenn es vorhanden ist "einfügen .. auf doppelte Update" wird es aktualisieren, aber es wird Autoincrement val nicht mit neu eingefügten one.Ich habe gehört, dass einfügen auf doppeltem Update hat einige Fehler, die es immer neue ID erzeugen und wenn es vorhanden ist, wird es löschen, aber ich möchte genau diese gelöschte ID erhalten. (Wenn ich last_inserted_id verwende, gebe ich die letzte ID der aktualisierten Spalte zurück, die nicht neu eingefügt wurde) will ID mit neu eingefügten Abfrage aktualisieren sollte wie folgt: einfügen, wenn vorhanden löschen eins und einfügen neues (mit automatischer Erhöhung) .Ich habe gehört, dass es ersetzen, aber es ist so langsam, und ich möchte nur ID mit neu eingefügten ID aktualisieren .Insert auf doppelte Update erhalten "neue" generierte ID
Antwort
Mit Respekt, Sie spielen mit dem Feuer, wenn Sie versuchen, ausgefallene Update-Logik mit Autoinkrement Spalten durchzuführen.
Wenn Sie beim Aktualisieren eine neue Autoinkrement-ID in einer Zeile benötigen, löschen Sie einfach die alte Zeile und fügen Sie die neue ein, wie Gordon sagte.
Unter einigen Datenbank-Workloads, die möglicherweise etwas langsamer als mit insert on duplicate key update
sind. Aber wenn Ihre Tabelle nicht mindestens 100 Megarows enthält oder wenn Sie mindestens 10 dieser Operationen pro Sekunde den ganzen Tag und die ganze Nacht ausführen, ist der Leistungsunterschied trivial. Wenn Sie über diese Art von Datenbankgröße oder Arbeitslast verfügen, wenden Sie sich an Ihren Datenbankadministrator.
REPLACE
= DELETE
, dann INSERT
. IODKU löscht nie. In jeder Spalte müssen Sie die Spalten eines Schlüssels eingeben, damit er weiß, mit welcher Zeile er arbeiten soll. Ein subtiler Punkt: Wenn mehrere Schlüssel UNIQUE
vorhanden sind, kann REPLACE
mehrere Zeilen löschen, dann fügen Sie nur einen ein.
IODKU kann die ID (entweder vorhanden oder neu) mithilfe von ... UPDATE id = LAST_INSERT_ID(id), ...
abrufen.
Ok Ich werde das tun, aber ich möchte lernen, welche Fälle auf Duplikat ist langsamer als löschen und einfügen? –
'REPLACE' muss mehr arbeiten, daher ist es wahrscheinlich immer langsamer. Ich habe der Antwort einige weitere Informationen hinzugefügt. –
Sie sagten, LAST_INSERTED_ID Ich möchte etwas wie diese ID mit der letzten update, die von "INSERT ... auf doppelte Update" generiert wird, aber es gab mir id der aktualisierten elem (alt) –
- 1. UPDATE auf INSERT doppelte Primärschlüssel in Oracle?
- 2. Manuelles Update automatisch generierte id von GORM
- 3. Zeile einfügen und generierte ID
- 4. Neue ID mit DB :: insert() in Laravel 4 zurückgeben
- 5. Wie INSERT neue Zeile und UPDATE alten Zeile Wert?
- 6. REGEX Tsql Insert auf Update-Befehl
- 7. Überspringen-over/ignorieren doppelte Zeilen auf Insert
- 8. durch Einsatz auf doppelte Schlüssel Update verwirrt
- 9. MySQL-Trigger auf Insert/Update Ereignisse
- 10. Auf doppelte Schlüssel-Update-Funktion in H2
- 11. doppelte Schlüssel Update
- 12. Get generierte CheckBox ID onLoad
- 13. SQL UPDATE mit automatischer INSERT
- 14. Update von eingefügt ID
- 15. MongoDB: insert auf doppelten Schlüsseln Update
- 16. Datenbank-generierte ID nach persistieren in Hibernate erhalten
- 17. Phantom-Cassandra Insert/Update Verhalten
- 18. Automatisch generierte Primärschlüssel-ID aus vorbereiteter Anweisung
- 19. Update Datensatz mit Entity FrameWork 7.Neue Datensatz auf Update
- 20. INSERT ... ON DUPLICATE KEY oder UPDATE ... SET
- 21. MULE: MYSQL CONNECTOR INSERT ON DUPLICATE UPDATE
- 22. Details: insert/update einzelnen Datensatz
- 23. C# Get Insert-ID mit Autoinkrement
- 24. TRIGGER mit INSERT UND UPDATE
- 25. firePropertyChange on Sequence generierte ID
- 26. INSERT neue Geschichte Zeilen basierend auf den Ergebnissen von UPDATE-Abfrage
- 27. SP für Get ID oder Insert ID
- 28. PHP PDO Letzter Insert Id
- 29. modell update für dynamisch generierte radiobuttons
- 30. Ist mysql UPDATE schneller als INSERT INTO?
Dann tun Sie dies in zwei Schritten. Sie wollen eine echte "löschen" gefolgt von einer "einfügen". Das ist nicht "bei doppelter Schlüsselaktualisierung". –
@GordonLinoff Aber ich habe gehört, dass insert und auch löschen ist langsamer als einfügen ... duplicate update –
@GordonLinoff sollte ich löschen und dann einfügen oder gibt es andere Möglichkeit? Ich brauche nur neue Werte mit neuen ID –