PDA

View Full Version : کنترل فیلد auto-increment



mrrajabi
شنبه 03 شهریور 1386, 11:52 صبح
سلام
فیلدهایی که auto -increment هستند رو چطور میشه کنترل کرد؟
مثلا جدولی 100 تا رکورد داره و آخرین مقدار یه فیلدی هم که اتوماتیکه 100 هست.حالا اگر که 50 رکورد آخر حذف بشن مقدار اولین فیلدی که قراره اضافه بشه 101 هست.
یادمه تو اکسس یه راهی برای کنترلش بود که در این شرایط مقدار رکورد جدید با 51 باشه نه 101.
ولی با MySql چطوری میشه فیلدهای Auto-Increment رو کنترل کرد ؟
با تشکر
Mr.rD

tabib_m
شنبه 03 شهریور 1386, 12:38 عصر
سلام

ببین این جواب میده؟ :


ALTER TABLE `tableName` PACK_KEYS =0 CHECKSUM =0 DELAY_KEY_WRITE =0 AUTO_INCREMENT =51

oxygenws
شنبه 03 شهریور 1386, 12:40 عصر
چرا نیاز به تغییر این مقدار دارید؟؟
اصولا (۱) حذف کردن یک فیلد خطرناکه و توصیه نمی شه و (۲) تا جایی که میشه، حتی در صورت حذف شدن، نباید شناسه ها تکراری باشه.

oxygenws
شنبه 03 شهریور 1386, 12:41 عصر
البته فکر کنم فقط همین مورد کافیست:

ALTER TABLE `tableName` AUTO_INCREMENT=51

tabib_m
شنبه 03 شهریور 1386, 16:14 عصر
(۱) حذف کردن یک فیلد خطرناکه و توصیه نمی شه
مگه قراره فیلدی حذف بشه؟


(۲) تا جایی که میشه، حتی در صورت حذف شدن، نباید شناسه ها تکراری باشه.
مگه قراره شناسه ی تکراری وارد بشه؟؟؟

mrrajabi
شنبه 03 شهریور 1386, 16:37 عصر
سلام دوستان.
ممنون از راهنمائی شما.
ولی عدد 51 که گفتم فقط یه مثال بود.من می خوام که همیشه اولین مقداری که برای فیلد auto-increment تعلق میگیره ،همون بزرگترین مقدار فیلد کلید(یعنی آخرین مقداری که تا حالا تعلق گرفته) +1 باشه.و اگه که قراره رکورد جدید مقدارش 150 باشه و چند تا از رکوردای انتهای جدولمون پاک شدن (مثلا همون صحبت اول که 50 رکور حذف بشن) مقدار این فیلد همون 150 نباشه. بلکه مثلا 151-50 باشه.
نمی دونم تونستم برسونم یا نه.مطلبم خیلی سادس ولی فکر کنم خودم یکم پیچوندم مطلبو.
با تشکر

I,Nobody
شنبه 03 شهریور 1386, 18:18 عصر
اصلاً مگه فیلد auto increament رو نمیشه دستی مقدار دهی کرد؟

tabib_m
شنبه 03 شهریور 1386, 18:57 عصر
خوب اگه اینجوری میخوای عمل کنی، باید همون دستی مقدار دهی کنی.
اول باید بزرگترین آی دی رو به دست بیاری، بعد یکی زیادش کنی و بریزیش توی فیلد آیدی برای اینسرت...

ولی برای چی میخوای این کار رو بکنی!؟

oxygenws
شنبه 03 شهریور 1386, 20:25 عصر
مگه قراره فیلدی حذف بشه؟

حالا اگر که 50 رکورد آخر حذف بشن


مگه قراره شناسه ی تکراری وارد بشه؟؟؟
منظورم شناسهء تکراری با مقادیر حذف شده است.

mrrajabi
شنبه 03 شهریور 1386, 22:22 عصر
سلام
خیلی ممنون از راهنمائی دوستان عزیز
من اینکارو برای نظم و انظباط بیشتر می خواستم بکنم.آخه یه جدولی است که دائم در حال ثبت و پاک شدن رکورد هست و شاید در آن واحد چند تا رکورد یکجا پاک بشن و چون قراره که مقادیر نمایش داده بشن شاید فاصله ی اعداد با هم کمی زشت بنظر برسه.
با تشکر
Mr.rD

oxygenws
یک شنبه 04 شهریور 1386, 00:07 صبح
من اینکارو برای نظم و انظباط بیشتر می خواستم بکنم.آخه یه جدولی است که دائم در حال ثبت و پاک شدن رکورد هست و شاید در آن واحد چند تا رکورد یکجا پاک بشن و چون قراره که مقادیر نمایش داده بشن شاید فاصله ی اعداد با هم کمی زشت بنظر برسه.
ID داده ای است که بیشتر توسط ماشین خونده میشه و نیازی به نظم و انضباط نداره!!
من هنوز کاربرد اینی که شما می خوای رو نمی فهمم... برای ماشین چه اون عدد ۱۰۸۷۲۳۶ باشه چه ۱۰ فرقی نمی کنه... مهم اینه که یونیک باشه!

mrrajabi
یک شنبه 04 شهریور 1386, 09:53 صبح
اگه فیلد کلید یکتا نبود که اصلا فیلد کلید نمی شد.اینم که ماشین می خونه شکی درش نیست.
ولی من یک جدول روی صفحه ی کاربرم دارم که این فیلد کلیدارو نمایش میده.حالا دوست داشتم که صفحم یه کم انظباط بیشتر داشته باشه.
از همه ی دوستان بابت راهنمائیها تشکر.
Mr.rD

tabib_m
یک شنبه 04 شهریور 1386, 11:02 صبح
ولی من یک جدول روی صفحه ی کاربرم دارم که این فیلد کلیدارو نمایش میده.حالا دوست داشتم که صفحم یه کم انظباط بیشتر داشته باشه.
خوب این کار ، کار درستی نیست. شما کافیه موقع نمایش فقط یک شمارنده داشته باشی که کنار هر ردیف ، یک عدد چاپ کنه و به اضافه ی یک بشه و بعد برای رکورد بعدی و ...

mrrajabi
یک شنبه 04 شهریور 1386, 17:35 عصر
سلام به همه ی دوستان
بله تبیب جان،این دیگه آخرین کاری بود که مجبور شدم همین کار رو انجام بدم.آخه فیلد کلیدم رو کاربرای مجبورن برای پروسه ی انجام ازمایش که مربوط به سایتم میشه یاداشت کنن و در صفحات بعد استفاده کنن و موقع گرفتن جواب آزمایششان این شماره رو بکار ببرند.حالا شمارنده رو باید استفاده بکنم ولی برای این فیلد کلیدم تصمیم گرفتم که یه سشن بکار ببرم و تو رویداد آن کلیکم شماره رو برای صفحات دیگری که دارم سند کنم.(با جاوا اسکریپت)

بازم از همه ی دوستان تشکر می کنم.
Mr.rD

I,Nobody
یک شنبه 04 شهریور 1386, 17:35 عصر
من هم با نظر tabib موافقم ولی به شرطی که نخوای id واقعی رو به کاربر بدی.
مثلاً توی مامبو یا جوملا، گاهی اوقات مدیر سایت لازمه که id اصلی رو بدونه.
ممکنه شما هم این نیاز رو برای کاربرت ایجاد کرده باشی.
در غیر اینصورت، متداولترین کار، همونیه که طبیب گفت