Bir sütunu INSERT
olan bir tabloya tek bir satır AUTO_INCREMENT
yaptığımda , bu satır için depolanan LAST_INSERT_ID()
yeni AUTO_INCREMENT
ed ed değeri döndürmek için işlevi kullanmak istiyorum .
Pek çok Microsoft SQL Server geliştiricisi ve yöneticisi, SQL Server'daki ( SCOPE_IDENTITY
ve @@IDENTITY
) eşdeğer işlevselliğin problemsiz olmadığının farkında değil .
MySQL dokümanlarının durumunu biliyorum:
Oluşturulan ID sunucuda bağlantı bazında tutulur . Bu, işlev tarafından belirli bir müşteriye döndürülen
AUTO_INCREMENT
değerin , o müşterinin birAUTO_INCREMENT
sütunu etkileyen en son ifade için üretilen ilk değer olduğu anlamına gelir . Bu değer, kendi değerlerini oluştursalar bile diğer müşterilerden etkilenemez . Bu davranış, her müşterinin, diğer müşterilerin faaliyeti için endişelenmeden ve kilitlere veya işlemlere ihtiyaç duymadan kendi kimliğini alabilmesini sağlar.AUTO_INCREMENT
ve hatta söyleyecek kadar ileri gitmek:
Birden çok istemciden eşzamanlı olarak kullanmak
LAST_INSERT_ID()
veAUTO_INCREMENT
sütunlar mükemmel şekilde geçerlidir.
LAST_INSERT_ID()
Doğru değeri geri getirmemeye neden olabilecek bilinen herhangi bir risk veya senaryo var mı?
CentOS 5.5 x64 ve Fedora 16 x64 ve InnoDB motorunda MySQL 5.5 kullanıyorum.
last_insert_id()
, bir sorgunun başarılı olup olmadığını yargılamak için varlığını kullanmamalıydınız. Ne de olsa başardığınızı bildiğiniz zaman ihtiyacınız olan değerleri tutan son eklenen Id.