Bir sütunu INSERTolan bir tabloya tek bir satır AUTO_INCREMENTyaptığımda , bu satır için depolanan LAST_INSERT_ID()yeni AUTO_INCREMENTed 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_IDENTITYve @@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_INCREMENTdeğerin , o müşterinin birAUTO_INCREMENTsü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_INCREMENTsü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.