برگزیده های پرشین تولز

جايگزين شدن ركورد خالي

setareh2

Registered User
تاریخ عضویت
24 ژانویه 2005
نوشته‌ها
649
لایک‌ها
2
سن
45
محل سکونت
OC
تو MySql يه ركورد دارم به اسم id كه از نوع INT و auto_increment هست و در ضمن اين primary key تيبل هست...
تو برنامه ما هر چند وقت يه بار يه سري ركورد حذف ميشه و يه سري ركورد اضافه ميشه...
چكار ميشه كرد كه id ركوردهاي جديد به جاي اينكه يكي بيشتر از آخرين id باشه يكي از ركوردهاي حذف شده باشه؟

نمي دونم منظورم رو درست گفتم يا نه!
مثلا بعد از پاك كردن ركورد 5 ترتيب id ها ميشه: 1و2و3و4و6و 7
حالا اگه ما ركورد جديد اضافه كنيم id اون ميشه 8!
من ميخوام id اون بشه 5...
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
ميتوني ركوردها رو فيزيكي حذف نكني بلكه فقط ماركدارشون كني - مثلا يك فيلد yes/no بعنوان Is_Deleted به جدولت استفاده كني (و در تمام queryها هم اين فيلد رو در نظر بگيري كه false باشه)
حالا بجاي اضافه كردن ركورد جديد اون رو روي ركوردي overwrite كن كه Is_Deleted اون True و Id اون كمترين مقدار رو داره!
ولي بايد راههاي بهتري هم باشه! اينكار overhead داره.
 

setareh2

Registered User
تاریخ عضویت
24 ژانویه 2005
نوشته‌ها
649
لایک‌ها
2
سن
45
محل سکونت
OC
به نقل از mazoolagh :
ميتوني ركوردها رو فيزيكي حذف نكني بلكه فقط ماركدارشون كني - مثلا يك فيلد yes/no بعنوان Is_Deleted به جدولت استفاده كني (و در تمام queryها هم اين فيلد رو در نظر بگيري كه false باشه)
حالا بجاي اضافه كردن ركورد جديد اون رو روي ركوردي overwrite كن كه Is_Deleted اون True و Id اون كمترين مقدار رو داره!
ولي بايد راههاي بهتري هم باشه! اينكار overhead داره.
ايده جالبي بود ممنون...
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
براي حذف overhead در كدنويسي و عدم نياز به تغيير كدهاي فعلي (بخش نمايش اطلاعات) يك كار ديگه هم ميشه كرد و اون ايجاد يك جدول براي نگهداري Id ركوردهاي حذف شده قبل از حذف فيزيكي هست.
حالا براي ايجاد ركورد جديد اگر اين جدول هيچ ركوردي نداشت كه به روال عادي ركورد اضافه بشه و در غير اينصورت كوچكترين Idش رو پيدا (و بعد حذف) كن و همراه با اطلاعات جديد در جدول اصلي ايجاد كن.
 

miladmovie

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
1,939
لایک‌ها
3
سن
39
فکر کنم نتونیم این کار رو انجام بدیم !
چون وقتی می گیم یک فیلد یکتا می خواهیم یعنی چی ؟
یعنی که فقط یک بار ایجاد بشه و دیگه شبیه اون رو نداشته باشیم(یعنی یکتا باشه) !!!!


حالا شاید روشی هم داشته باشه ولی این استدلال من بود ! فکر کنم توی SQL SERVER خودش اتوماتیک آخرین رکورد رو بر می داره ولی نمی تونه از بینش کدی رو درست کنه !
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
به نقل از miladmovie :
فکر کنم نتونیم این کار رو انجام بدیم !
چون وقتی می گیم یک فیلد یکتا می خواهیم یعنی چی ؟
یعنی که فقط یک بار ایجاد بشه و دیگه شبیه اون رو نداشته باشیم(یعنی یکتا باشه) !!!!


حالا شاید روشی هم داشته باشه ولی این استدلال من بود ! فکر کنم توی SQL SERVER خودش اتوماتیک آخرین رکورد رو بر می داره ولی نمی تونه از بینش کدی رو درست کنه !

كدوم كار رو نميشه انجام داد؟ - خواسته كلي ستاره2 يا روشهاي پيشنهادي؟
 

setareh2

Registered User
تاریخ عضویت
24 ژانویه 2005
نوشته‌ها
649
لایک‌ها
2
سن
45
محل سکونت
OC
ممنون دوستان مشكل اصلي من رسيدن به ركورد قبلي و بعدي( http://forum.persiantools.com/t20925.html ) بود كه حل شد...
البته اگه از روش مازولاق عزيز استفاده كنم بجاي استفاده از چند query از يه query استفاده ميشه
 

miladmovie

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
25 دسامبر 2002
نوشته‌ها
1,939
لایک‌ها
3
سن
39
به نقل از mazoolagh :
كدوم كار رو نميشه انجام داد؟ - خواسته كلي ستاره2 يا روشهاي پيشنهادي؟
منظورم همونی که ستاره می خواد
 
بالا