PDA

View Full Version : سوال: فوری: دریافت آخرین مقدار یک ستون Indentity که من الان توش Insert کردم



odiseh
دوشنبه 13 آبان 1387, 11:27 صبح
سلام
من یه SP نوشتم که داخل یه تراکنش، می آد داخل یه جدول که یه ستونش از نوع Indentity هستش، یک رکورد Insert می کنه.
حالا من بعد از عمل Insert، به مقدار همون ستون Indentity نیاز دارم تا اطلاعات مربوط به بخش Detail رو داخل یه جدول دیگه که جدول Detail هستش بریزم. (طراحی Master-Detail)

سوال من اینجاست که برای دریافت اون مقدار Indentity که من توش Insert کردم باید از
@@IDENTITY استفاده کنم یا Scope_Indentity ?

SQL Server چطور تشخیص می ده که مقدارIdentity رو که مربوط به رکورد من هستش به من برگردونه و اگه مثلا یه نفر دیگه همزمان با من اون SP رو داره اجرا میکنه، مقدار ستون Identity حاصل از عمل Insert اونو به من نده ?

mehdi58
دوشنبه 13 آبان 1387, 14:22 عصر
دوست عزيز شما داري مي گي از يه Transaction استفاده مي كني پس اگه از IDENTITY@@ استفاده كني قاعدتا با توجه به رعايت اصول Locking از طرف شما ، اين مشكل پيش نخواهد اومد .
موفق باشين

amin_alexi
دوشنبه 13 آبان 1387, 14:27 عصر
من از Identity@@ استفاده مي كنم !
به هر حال من فكر مي كنم كه هر چه قدر همزمان باز يكي از در خواستها اول بررسي ميشه ! و در اون لحظه مقدار Identity رو اگه Fetch كنيد مشكلي پيش نمي آد.

کم حوصله
دوشنبه 13 آبان 1387, 15:21 عصر
سلام
از Scope_Indentity استفاده کنید

کم حوصله
دوشنبه 13 آبان 1387, 15:25 عصر
http://msdn.microsoft.com/en-us/library/ms190315.aspx

odiseh
سه شنبه 14 آبان 1387, 09:22 صبح
سلام
از Scope_Indentity استفاده کنید


آقا/ خانم کم حوصله
تو BooksOnline نوشته ،
Scope_Identity به آخرین مقدار درج شده در یک ستون Identity در همان Scope اشاره می کنه. آیا این Scope منظورش Session کاربر هستش؟ اگه اینطوری باشه شما درست میگین و باید از
Scope_Identity استفاده کرد.
میشه نظر بدین

Alireza Orumand
چهارشنبه 15 آبان 1387, 07:14 صبح
سلام
برای کاری که شما مد نظروتون هست همیشه باید از Scope_Identity استفاده کنید. @@Identity آخرین ID تولید شده را به شما میده و با فرض اینکه بعد از تولید این رکورد و قبل از خواندن مقدار @@Identity یک رکورد جدید وارد دیتابیس بشه، شما مقدار جدید را خواهید داشت نه مقدار دلخواه خودتون را. ولی Scope_Identity تضمین کننده این مطلب هست که شما همین ID مورد نظر خودتون را به دست بیاورید.
موفق باشید.

odiseh
چهارشنبه 15 آبان 1387, 15:08 عصر
با تشکر از همه دوستان ،
درسته Scope_Identity باید استفاده بشه.