gilas1368
پنج شنبه 23 تیر 1390, 18:02 عصر
با سلام
با خودم فکر کردم شاید این مطلب بدرتون بخوره به همین خاطر این تاچیک رو ایجاد کردم
خب 4 روش برای فهمیدن شماره آخرین رکورد add شده به جدول وجود داره که عبارتند از:
1-استفاده از تابع MAX : ولی باید توجه داشت که این تابع باعث میشه بار اضافی زیادی برای پیدا کردن بیشترین مقدار شماره رکورد پس از هر دستور Insert به SQL server وارد میکنه و شاید اصلا نشه ازش به عنوان یه روش یاد کرد.
2-استفاده از متغیرidentity@@ : فقط در هنگام استفاده از این روش باید یه سری نکات رو بدونین
2-1 : این متغیر آخرین مقدار identity درج شده در connection فعلی رو برمی گردونه.بدین ترتیب این امکان وجود داره که مقدار identity یه جدول دیگه رو برگردونه.
2-2 :در صورتیکه برای Insert کردن از یه Trigger استفاده کرده باشین و داخلش عملیات Insert رو انجام بدین باعث میشه مقدار ناخواسته ای رو برگردونه
3- ()SCOPE_IDENTITY :که برخلاف identity@@ به اتصال ومحدوده فراخوانی وابستس.یعنی اگر مثلا این دستور داخل یه stored procedure فراخوانی بشه،آخرین مقدار Insert شده تو دستوراتی که داخل این stored procedure وجود داره رو برمی گردونه و به مقادیر Insert شده تو خارج از این stored procedure کاری نداره
4-('tabelname') IDEN_CURRENT:استفاده از این تابع در نگاه اول باعث خواناتر شدن برنامه میشه ام از طرف دیگه این مقدار به ارتباط جاری یا محدوده انجام عملیات ثبت وابسته نیست و این یعنی اینکه اگر چند کاربر بطور همزمان چند دستور Insert رو انجام بدن ممکنه بعد از ثبت و فراخوانی این تابع ، مقداری رو که برگردونه درست نباشه بنابراین نتیجه ای که از این تابع می گیریم اینه که این تابع در محیط هایی که چندین تماس به طور همزمان داخل اونا انجام میشه کارایی نداره
متشکرم
با خودم فکر کردم شاید این مطلب بدرتون بخوره به همین خاطر این تاچیک رو ایجاد کردم
خب 4 روش برای فهمیدن شماره آخرین رکورد add شده به جدول وجود داره که عبارتند از:
1-استفاده از تابع MAX : ولی باید توجه داشت که این تابع باعث میشه بار اضافی زیادی برای پیدا کردن بیشترین مقدار شماره رکورد پس از هر دستور Insert به SQL server وارد میکنه و شاید اصلا نشه ازش به عنوان یه روش یاد کرد.
2-استفاده از متغیرidentity@@ : فقط در هنگام استفاده از این روش باید یه سری نکات رو بدونین
2-1 : این متغیر آخرین مقدار identity درج شده در connection فعلی رو برمی گردونه.بدین ترتیب این امکان وجود داره که مقدار identity یه جدول دیگه رو برگردونه.
2-2 :در صورتیکه برای Insert کردن از یه Trigger استفاده کرده باشین و داخلش عملیات Insert رو انجام بدین باعث میشه مقدار ناخواسته ای رو برگردونه
3- ()SCOPE_IDENTITY :که برخلاف identity@@ به اتصال ومحدوده فراخوانی وابستس.یعنی اگر مثلا این دستور داخل یه stored procedure فراخوانی بشه،آخرین مقدار Insert شده تو دستوراتی که داخل این stored procedure وجود داره رو برمی گردونه و به مقادیر Insert شده تو خارج از این stored procedure کاری نداره
4-('tabelname') IDEN_CURRENT:استفاده از این تابع در نگاه اول باعث خواناتر شدن برنامه میشه ام از طرف دیگه این مقدار به ارتباط جاری یا محدوده انجام عملیات ثبت وابسته نیست و این یعنی اینکه اگر چند کاربر بطور همزمان چند دستور Insert رو انجام بدن ممکنه بعد از ثبت و فراخوانی این تابع ، مقداری رو که برگردونه درست نباشه بنابراین نتیجه ای که از این تابع می گیریم اینه که این تابع در محیط هایی که چندین تماس به طور همزمان داخل اونا انجام میشه کارایی نداره
متشکرم