افزونه 1 مشکل با فیلد AUTO_INCREMENT

ali.2

Active Member
SQL:
CREATE TABLE IF NOT EXISTS projects (
    id INT AUTO_INCREMENT,
    title VARCHAR(255),
    begin_date DATE NOT NULL,
    complete_date DATE NOT NULL,
    PRIMARY KEY(id)
);
با کد بالا جدول projects رو ساختم.

SQL:
INSERT INTO projects(title,begin_date, complete_date)
VALUES('New CRM','2020-01-01','0000-00-00'),
      ('ERP Future','2020-01-01','0000-00-00'),
      ('VR','2020-01-01','2030-01-01');

سه تا رکورد هم افزودم. مقدار فیلد id برای رکورد آخر برابر 3 میشه.

SQL:
INSERT INTO projects(title,begin_date, complete_date)
VALUES('MRP III','2010-01-01','2020-12-31');

یک رکورد دیگه هم به جدول اضافه میکنم. مقدار فیلد id برای این رکورد برابر 4 میشه.
با کد زیر آخرین رکورد جدول رو حذف میکنم
SQL:
DELETE FROM projects WHERE id=4;

و یه رکورد به جدول اضافه میکنم:
SQL:
INSERT INTO projects(title,begin_date,complete_date) VALUE
('MRP III','2010-01-01','2020-12-31');

آخرین مقدار فیلد id برابر با 5 میشه. میخوام همون 4 باشه. آخرین رکوردی که از جدول حذف کردم از فیلد id یکی کم نکرد. باید چیکار کنم؟
 

ali.2

Active Member
یه راهش اینه که برا فیلد id به صورت دستی مقداردهی کنم.
مثلا کدی که آخرین رکورد رو تو جدول درج میکنه به
SQL:
INSERT INTO projects(id,title,begin_date,complete_date) VALUE
(4,'MRP III','2010-01-01','2020-12-31');
تغییر بدم. راهی وجود نداره که به صورت اتوماتیک خواسته من انجام بشه؟ یعنی با حذف رکورد آخر جدول از مقدار فیلد AUTO_INCREMENT هم که همون فیلد id هست، یکی کم بشه
 

the_king

مدیرکل انجمن
یه راهش اینه که برا فیلد id به صورت دستی مقداردهی کنم.
مثلا کدی که آخرین رکورد رو تو جدول درج میکنه به
SQL:
INSERT INTO projects(id,title,begin_date,complete_date) VALUE
(4,'MRP III','2010-01-01','2020-12-31');
تغییر بدم. راهی وجود نداره که به صورت اتوماتیک خواسته من انجام بشه؟ یعنی با حذف رکورد آخر جدول از مقدار فیلد AUTO_INCREMENT هم که همون فیلد id هست، یکی کم بشه
اینکار انجام نمیشه چون الگوریتم تعیین شناسه منحصر بفرد برای افزایش کارایی پایگاه داده طراحی شده، صرفا برایش مهمه که شناسه منحصر بفرد باشه، مقدارش ابدا مهم نیست. اگر بخواد هر بار بررسی کنه که چه شناسه ای در جدول جاش خالیه یا مقدار حداکثر رو در جدول پیدا کنه، نیاز داره که یکبار کلیه شناسه های جدول رو واکشی و بررسی کنه و کارکرد درج کردنش صرفا بخاطر یک شناسه کند میشه.
 

جدیدترین ارسال ها

بالا