کلید ID بر اساس تعداد رکورد ها ؟
سلام خیلی زود میرم سر اصل مطلب ...
من یه جدول ایجاد و فیلد ID رو به عنوان کلید جدول انتخاب کردم . سوالی که دارم اینه که چطوری اگه مثلا من Record سوم رو پاک کردم مقدار های فیلد ID به طور خودکار دوباره بر اساس تعداد رکورد ها مقدار دهی بشن . یعنی مثلا وقتی من Record سوم رو پاک کردم مقدار ID رکورد چهارم با حذف شدن رکورد سوم بشه سه یه جورایی جایگزین رکورد قبلی بشه .
نقل قول: کلید ID بر اساس تعداد رکورد ها ؟
فیلد ID همچین خاصیتی نداره، درواقع شما از ویژگی "تکراری نبودن" فیلد ID استفاده می کنید و به خود مقدارش کاری ندارید
میشه با روشهایی مثل ویرایش جدول این کار رو انجام داد اما این نوع طراحی صحیح نیست
اگر نیاز به فیلد برای شماره رکورد دارید نباید اون رو از نوع Auto-Increment بذارید و البته نیازی به ساخت فیلد جداگانه برای شماره رکورد نیست، می تونید توی Select شماره رکورد رو هم بیارید، مثال :
SET @row_number = 0;
SELECT (@row_number := @row_number + 1) AS Row_Number, UserName, Password FROM user_table ORDER BY ...
یا اگه بخواید مقدار دهی اولیه متغیر و Select رو در یک Query انجام بدید، میتونید به این صورت بنویسید :
SELECT (@row_number := @row_number + 1) AS Row_Number, UserName, Password FROM user_table, (SELECT @row_number := 0) AS m ORDER BY ...
نقل قول: کلید ID بر اساس تعداد رکورد ها ؟
امکان این کار با دستور زیر هست:
ALTER TABLE tablename AUTO_INCREMENT = (select max(id) from tablename)+1
ولی همونطور که دوستمون گفتن اصلا کار خوبی نیست!