# پایگاه‌های داده > SQL Server > Management Studio >  به دست اوردن اخرین ایدی در جدول

## baran_2005

همیشه برای به دست اوردن ایدی اخرین رکورد استرس دارم  :متفکر:  که اشتباهی رخ بده هرچند تا حالا به مشکل نخوردم ولی در کل میخوام بدونم به
  @@IDENTITY و  SCOPE_IDENTITY چقدر میشه اطمینان کرد یا گرفتن یک سلکت از مکس ایدی . 
مثلا من یک پراسیژر دارم که درج انجام میده و همزمان با درج یک تریگر اجرا میشود که در جدول دیگری درج انجام میده و درج در این جداول در لحظه ممکن مثلا  300 رکورد باشه !
 اگر اطلاعاتی در این مورد دارید ممنون میشم پست بگذارید

----------


## parvizwpf

ident_current('tblName')

----------


## mmbguide

به این لینک یه نگاه بنداز
https://docs.microsoft.com/en-us/sql...ql-server-2017

به پاراگرافی که با این جمله شروع میشه دقت کن
Be cautious about using IDENT_CURRENT

----------


## mmbguide

البته خودمم دوست دارم دوستان نظراتشون رو بدند.

مثلا توضیحی که در Documentationهای SQL اومده اینطور میگهDENT_CURRENT is not limited by scope and session

هر برنامه ای که به SQL متصل میشه SQL یک Session براش میسازه که مخصوص همون Connection هستش. حالا توضیح بالا میگه براش Session مهم نیست و این شاید همون نگرانی شما باشه. چون ممکن بنابه دلایلی نتیجه Insert یکی کاربر دیگه رو به شما برگردونه. ولی SCOPE_IDENTITY و  @@IDENTITY مقدار Insert شده در Sessionجاری رو برمیگردونه. این Session جاری همون Sessionی هستش که SQL برای اتصال برنامه شما تولید کرده. اما یک مورد هم داریم به نام Scope که باز هم کار رو دقیقتر میکنه که از بین سه گزینه بالا تنها Scope_Identity میتونه اون رو مد نظر قرار بده.

_به متن زیر از لینک زیر توجه کن_https://docs.microsoft.com/en-us/sql...ql-server-2017


For example, there are two tables, T1 and T2, and an INSERT trigger is defined on T1. When a row is inserted to T1, the trigger fires and inserts a row in T2. This scenario illustrates two scopes: the insert on T1, and the insert on T2 by the trigger.

Assuming that both T1 and T2 have identity columns, @@IDENTITY and SCOPE_IDENTITY return different values at the end of an INSERT statement on T1. @@IDENTITY returns the last identity column value inserted across any scope in the current session. This is the value inserted in T2. SCOPE_IDENTITY() returns the IDENTITY value inserted in T1. This was the last insert that occurred in the same scope. The SCOPE_IDENTITY() function returns the null value if the function is invoked before any INSERT statements into an identity column occur in the scope.
اگه دوستان که دانش دقیقتری دارند و این مسئله رو روشنتر کنند ممنون میشم

----------

