PDA

View Full Version : سوال: سورت شماره ردیف جداول بعد از حذف یک رکورد



neda_dela
چهارشنبه 14 مهر 1389, 04:54 صبح
سلام
من میخام که بعد از حذف یک رکورد شماره های ردیف جداولم که از نوع bigint هستن و به صورت خودکار با ثبت هر رکورد increment میشن ، حالا سورت بشن
یعنی مثلا اگه من 3 تا رکورد دارم با ردیف 1 و 2 و3 وقتی رکورد 2 رو حذف می کنم در حال حاضر ردیف ها رو 1 و 3 نشون میده میخام که بعد از حذف 2 شماره ردیف ها هم 1 و 2 بشه
این چطور امکان داره؟
مرسی

water_lily_2012
چهارشنبه 14 مهر 1389, 05:56 صبح
فکر کنم باید به ترتیب شماره رکود ها را بخونی و اگر جایی چیزی پاک شده بود شماره رکورد های بعد از اون را کم کنی و سپس آپدیت کنی

ولی بهترین راه در صورتی که جدول شما مدام در حال ایجاد رکورد هست این است که یک ستون Flag در نظر گرفته و در صورت پاک کردن رکوردی فقط مقدار Flag را تغییر دهید و در هنگام خواندن این ستون را نخوانید و در صورت ایجاد رکورد اگر رکورد پاک شده دارید در آن بنویسید.

FastCode
چهارشنبه 14 مهر 1389, 06:37 صبح
اگر sql کار میکنید میتونید یه ستون اضافه داشته باشید به این شکل:
یه insert trigger داشته باشید و مقدار فیلد رو از max یک دونه بیشتر set کنید.
و یه delete trigger که موقع delete تمام مقادیر اون ستون بعد از primary key در حال حذف رو یک دونه کم کنه.

csharpprogramer88
چهارشنبه 14 مهر 1389, 21:57 عصر
سلام
من اين كدي كه مي فرستم روي سيستم خودم تست كردم چون اس كيو ال سيستمم مشكل داره نميتونم بانك را بفرستم و شما بايد يك بانك بسازيد و كانكشن استرينگ را هم تغيير بديد .
اين كد را بنده با در نظر گرفتن اين كه شما يك گريد داريد و كاربر ميخواد سطر فعلي گريد را حذف كند نوشته شده است و در جدولي كه فيلد آي دي آن مرتب باشد طبق درخواست شما كار ميكند
اميدوارم مفيد باشه
البته حتما راه هاي بهتري هم وجود داره