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!

War es hilfreich?

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:

  1. Öffnen Sie zwei Shell-Fenster, führen Sie mysql Client in Verbindung zu jedem und Datenbank.
  2. Shell 1: INSERT in eine Tabelle mit einem AUTO_INCREMENT-Taste.
  3. Shell 1: SELECT LAST_INSERT_ID (), siehe Ergebnis.
  4. Shell. 2: INSERT in der gleichen Tabelle
  5. Shell 2: SELECT LAST_INSERT_ID (), siehe führen verschieden von Shell 1.
  6. 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.

scroll top