البته خودمم دوست دارم دوستان نظراتشون رو بدند.
مثلا توضیحی که در 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.
اگه دوستان که دانش دقیقتری دارند و این مسئله رو روشنتر کنند ممنون میشم