View Full Version : سوال: کلید ID بر اساس تعداد رکورد ها ؟
AliShini
دوشنبه 18 اردیبهشت 1396, 10:39 صبح
سلام خیلی زود میرم سر اصل مطلب ...
من یه جدول ایجاد و فیلد ID رو به عنوان کلید جدول انتخاب کردم . سوالی که دارم اینه که چطوری اگه مثلا من Record سوم رو پاک کردم مقدار های فیلد ID به طور خودکار دوباره بر اساس تعداد رکورد ها مقدار دهی بشن . یعنی مثلا وقتی من Record سوم رو پاک کردم مقدار ID رکورد چهارم با حذف شدن رکورد سوم بشه سه یه جورایی جایگزین رکورد قبلی بشه .
Mahmood_M
سه شنبه 19 اردیبهشت 1396, 02:22 صبح
فیلد 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 ...
golbafan
پنج شنبه 04 خرداد 1396, 08:19 صبح
امکان این کار با دستور زیر هست:
ALTER TABLE tablename AUTO_INCREMENT = (select max(id) from tablename)+1
ولی همونطور که دوستمون گفتن اصلا کار خوبی نیست!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.