PDA

View Full Version : در مورد فیلد رکورد ( شمارنده)



abynaneh63
شنبه 13 دی 1393, 12:38 عصر
با عرض سلام و خسته نباشید خدمت شما دوستان.
سوالی داشتم در خصوص دستور set identity_insert on | off و کاربرد آن و اینکه اگر رکوردی از جدول حذف شود و بخواهیم مجدد همان رکورد را برگردانیم باید از چه دستوری استفاده نماییم؟
با تشکر.
به عنوان مثال رکورد ما از 1 شروع شده
1
2
3
4
.
.
و ممکن است رکورد 3 در جدول حذف شود برای برگرداندن رکورد مورد نظر باید از چه دستوری استفاده کرد؟

tiphooo
یک شنبه 14 دی 1393, 00:26 صبح
فیلدی از جدول را که به صورت Auto Increment تعریف کرده اید به صورت دستی نمیتوانید مقدار دهی کنید مگر اینکه از دستور set identity_insert on | off استفاده کنید
فیلدی که مقدارش Auto Increment باشد با حذف یک رکورد فاصله ایجاد میشود و میتوانید با دستور
set identity_insert off مجددا و با کد نویسی ابتدا عدد مورد نظر حذف شده را پیدا وسپس درج کرد
و مجدد set identity_insert on بشود
ولی معمولا این کار اشتباه میباشد و کل سابقه تاخر و تقدم درج رکوردها در جدول شما از بین میرود
و مشکل دیگر اینکه زمانی که شما set identity_insert off میکنید اگر کاربر دیگری همزمان عملیات درج انجام بدهد شما با مشکل روبرو خواهید شد مگر اینکه از transaction استفاده کنید
اگر قرار است با حذف یک رکورد مجددا همان شماره را برگردانید پس کلا راهکار را عوض کرده و از فیلد Auto Increment استفاده نکنید

DataMaster
یک شنبه 14 دی 1393, 12:28 عصر
به جای حذف فیزیکی روکورد هم میتونید از حذف منطقی بهره ببرید و یه فیلد حذف به جدول اضافه کنید ، و موقع درج رکورد جدید بین رکوردهایی حذف شده اند رو آپدیت کنید