آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

راهنمایی در مورد auto increment

Hello World  10 سال پیش  10 سال پیش
0 0

سلام_ عیدتون مبارک
یه ستون sql میخواستم بسازم_ که auto increment باشه
من میخوام وقتی یک فیلدی حذف شد
شماره id ها مرتب بشه

مثلا الان وقتی شماره 79 حذف میشه
ستون میشه:
77-78-80


میخوام ترتیب حفظ بشه

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
117923  10 سال پیش
+1 0

ببینید، وقتی فیلد id یک جدول خصوصیت AUTO_INCREMENT داره، موقع تغییرات دو تا مشکل بوجود می آید: اولا هر رکوردی که حذف می شود باعث نا منظم شدن ترتیب شماره id ها می شود و ثانیا وقتی که می خواهیم به چنین جدولی، رکوردی را اضافه کنیم، شماره فیلد id آن یکی بیشتر از شماره فیلد id آخرین رکوردی خواهد بود که وجود دارد یا وجود داشته!!

خوب، در درجه اول فرض می کنیم ما 10 تا رکورد داشتیم با شماره id های 1 تا 10 و آمدیم رکورد شماره 9 رو پاک کردیم. حالا اگر رکوردی اضافه کنیم، id آن برابر 11 می شود نه 9 ! برای حل این مشکل باید مقدار AUTO_INCREMENT را به این شکل reset کنیم:


ALTER TABLE tablename AUTO_INCREMENT = 1


اجرای این query باعث می شود مقدار AUTO_INCREMENT بعدی یکی بیشتر از مقدار بزرگترین AUTO_INCREMENT موجود باشد. پس اگر به این جدول رکورد دیگری اضافه شود، مقدار id آن 9 خواهد بود.

حالا فرض می کنیم همان 10 رکورد را داریم ولی این بار رکوردهای وسطی را حذف کرده ایم (چهارمی و پنجمی). میخواهیم رکورد بعدی شماره 4 داشته باشد نه 11. برای حل این مشکل نیز، query زیر را استفاده می کنیم:


SET insert_id = 4;
INSERT INTO tablename VALUES ('blah', '...');


دستور SET insert_id شماره AUTO_INCREMENT بعدی را که insert می کنید، مشخص می کند. (فقط و فقط رکورد insert شده بعدی)

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .