Einfache mysql Frage zu Primärschlüssel und ein Einsatz
-
03-07-2019 - |
Frage
mysql, wie bekomme ich den Primärschlüssel für einen Einsatz Betrieb verwendet wird, wenn es selbstinkrementierende.
Grundsätzlich möchte ich die neue autoincrement-Wert zurückgegeben werden, wenn die Anweisung abgeschlossen ist.
Danke!
Lösung
Ihre Klarstellung Kommentar sagt, dass Sie sich dafür, dass daran interessiert sind, dass LAST_INSERT_ID () nicht das falsche Ergebnis geben, wenn gleichzeitig eine andere INSERT passiert. Seien Sie versichert, dass es sicher ist LAST_INSERT_ID () unabhängig von anderen gleichzeitigen Aktivitäten zu verwenden. LAST_INSERT_ID () gibt nur die letzte ID während der aktuellen Sitzung generiert.
Sie können es versuchen, sich selbst:
- Öffnen Sie zwei Shell-Fenster, führen Sie mysql Client in Verbindung zu jedem und Datenbank.
- Shell 1: INSERT in eine Tabelle mit einem AUTO_INCREMENT-Taste.
- Shell 1: SELECT LAST_INSERT_ID (), siehe Ergebnis.
- Shell. 2: INSERT in der gleichen Tabelle
- Shell 2: SELECT LAST_INSERT_ID (), siehe führen verschieden von Shell 1.
- Shell 1: SELECT LAST_INSERT_ID () wieder sehen, eine Wiederholung der früheren Ergebnis.
Wenn man darüber nachdenkt, ist dies der einzige Weg, die Sinn macht. Alle Datenbanken, die mit automatischer Erhöhung Schlüsselmechanismen unterstützen, müssen so handeln. Wenn das Ergebnis auf einer Race-Bedingung hängt mit anderen Clients möglicherweise gleichzeitig eingesetzt wird, dann gäbe es keine zuverlässige Möglichkeit, den letzten Eingabe-ID-Wert in der aktuellen Sitzung zu erhalten.
Andere Tipps
MySQL LAST_INSERT_ID ()
Der MySQL-Docs die Funktion beschreiben:
[select max (primary_key_column_name) aus table_name]
Ahhh nicht nessecarily. Ich bin kein MySQL Kerl, aber es gibt bestimmte Art und Weise die letzte Eingabe-ID für das letzte abgeschlossene Aktion, die sind ein wenig robuster als diese zu erhalten. Was passiert, wenn ein Einsatz ist passiert zwischen Ihnen an den Tisch zu schreiben und es abfragt? Ich kenne, weil es mir vor vielen Monden gestochen (also ja es passiert).
Wenn alle Stricke reißen das Handbuch lesen: http: // dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html