ورود

View Full Version : از بین نرفتن id



googoli
چهارشنبه 07 آبان 1393, 20:22 عصر
سلام
من می خوام وقتی یکی از رکورد هام حذف میشه id اون از بین نره
مثلا
اگر رکورد 5 حذف شد دوباره رکورد بعدی که اضافه میشه ایدیش 5 باشه نه 6
چکار باید بکنم ؟

us1234
چهارشنبه 07 آبان 1393, 21:45 عصر
از auto increment نباید استفاده کنید .

و در برنامه همیشه آخرین رکورد را سلکت کنید و یکی به آی دی اون اضافه کن و بذار برای رکورد جدید .

googoli
چهارشنبه 07 آبان 1393, 22:24 عصر
من از یکی از دوستان شنیدم که میشه هم auto increment استفاده کرد و هم این مشکل پیش نیاد

miladamirzadeh
پنج شنبه 08 آبان 1393, 08:34 صبح
توی MySQL شما می توانید هم رکوردی رو روی auto_increment قرار بدید و هم برای اون مقداری تعیین کنید، اما این کار درستی نیست. id یک شناسه یکتا هست و باید یکتا باقی بماند حتی اگر رکوردی حذف شد درست آن است که رکوردی جایگزین آن نشود. شما چیزی همانند ردیف یا شماره سند می خواهید، که باید با اضافه کردن فیلد دیگر و مکانیزم کنترل از سمت برنامه مقدار آن را مدیریت کنید.

2020s1371
پنج شنبه 08 آبان 1393, 09:14 صبح
یه چیزی میگم دوستان دیگه نظر بدن درباره ش:

میتونید یه ستون برای فعال بودن ویا فعال نبودن اون سطر داشته باشید ک بجای عمل دلیت اون ستون رو تغییر بدین (0 غیر فعال و 1 فعال)
اینجوری از اوتو اینکریمنت هم استفاده میشه و هم اطلاعات قبلیتون رو دارید و هم اتفاقی ک میخاید میفته
ولی این برای وقتیه که بخاید اطلاعات قبلی رو هم نگه دارید


کار دیگه ای هم میشه کرد:
عمل دلیت رو خودتون بازنویسی کنید جوری که مقدار آخرین سطر رو برای اوتواینکریمنت ست کنه!

afshin9032
پنج شنبه 29 آبان 1393, 14:10 عصر
یه چیزی میگم دوستان دیگه نظر بدن درباره ش:

میتونید یه ستون برای فعال بودن ویا فعال نبودن اون سطر داشته باشید ک بجای عمل دلیت اون ستون رو تغییر بدین (0 غیر فعال و 1 فعال)
اینجوری از اوتو اینکریمنت هم استفاده میشه و هم اطلاعات قبلیتون رو دارید و هم اتفاقی ک میخاید میفته
ولی این برای وقتیه که بخاید اطلاعات قبلی رو هم نگه دارید


کار دیگه ای هم میشه کرد:
عمل دلیت رو خودتون بازنویسی کنید جوری که مقدار آخرین سطر رو برای اوتواینکریمنت ست کنه!

روش اول گزینه مناسبی هست اما بالطبع مدیریت چنین روشی به مراتب سخت تر می باشد و باید احتیاط کنید در خواندن و نمایش داده ها .

اما روش دوم باز هم با هدف ایجاد فیلد autoincrement در تضاد هست و سربار اضافی بر روی سرور ایجاد می کنه زمانی که حجم داده ها زیاد باشه .