Sven Rautenberg: Gerade generieren Primary Key ermitteln

Beitrag lesen

Moin!

Nun möchte ich, sofort nach dem schreiben in die DB, diesen Wert
ermitteln. Wie macht man das?

  
SELECT LAST_INSERT_ID()  

Die MySQL-API bietet dafür auch eine Funktion an, die stattdessen aufgerufen werden kann, aber da ich Java nicht kenne, wirst du selbst mal in die Doku schauen müssen. Das Stichwort ist dasselbe.

Ach ja, noch eines: Ignoriere bitte alle anderen Tipps, die dir versuchen einzureden, man könne irgendwie das bisherige Maximum der IDs nehmen oder sonst etwas. In jetzigen Versionen von MySQL mag das eventuell klappen, weil auto_increment tatsächlich immer 1 addiert. Das Verfahren zur Vergabe von neuen IDs kann sich aber grundsätzlich auch mal ändern, und außerdem ist ein INSERT und ein nachfolgendes SELECT MAX(id) nicht atomar! Wenn in der Zeit zwischen den Querys jemand anderes neue Datensätze einfügt, erhälst du deren ID.

LAST_INSERT_ID() hingegen basiert auf der letzten INSERT-Operation der aktiv benutzten MySQL-Verbindung und liefert garantiert die richtige ID - auch wenn parallel andere Verbindungen jeweils andere neue IDs generieren.

- Sven Rautenberg

--
My sssignature, my preciousssss!