Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Reset Auto Increment ใน MySQL ใช้ค่า MAX จากตารางอื่น

ตั้งค่า AUTO_INCREMENT ใหม่ด้วยค่า MAX จากตารางอื่น

ใช้ Prepared Statement เพื่อดึงค่า MAX จากตารางหนึ่ง แล้วนำไปตั้งค่า AUTO_INCREMENT ของอีกตารางหนึ่ง

ขั้นตอนและคำสั่ง

-- 1. ดึงค่า MAX จากตารางแรก เก็บไว้ในตัวแปร
SET @max_val = (SELECT MAX(MaxNumber) FROM FirstTableMaxValue);

-- 2. สร้างคำสั่ง ALTER TABLE แบบ Dynamic
SET @sql = CONCAT('ALTER TABLE AutoIncrementWithMaxValueFromTable AUTO_INCREMENT = ', @max_val);

-- 3. Prepare และ Execute
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

ตัวอย่างสมบูรณ์

ตารางที่ 1: FirstTableMaxValue (มีค่า 100, 1000, 2000, 90, 2500, 2300)

ค่า MAX = 2500

ตารางที่ 2: AutoIncrementWithMaxValueFromTable

CREATE TABLE AutoIncrementWithMaxValueFromTable (
    ProductId INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (ProductId)
);

รันคำสั่งตั้งค่า AUTO_INCREMENT = 2500:

SET @v = (SELECT MAX(MaxNumber) FROM FirstTableMaxValue);
SET @sql = CONCAT('ALTER TABLE AutoIncrementWithMaxValueFromTable AUTO_INCREMENT = ', @v);
PREPARE stmt FROM @sql;
EXECUTE stmt;

Insert ข้อมูลใหม่ - จะเริ่มจาก 2500:

INSERT INTO AutoIncrementWithMaxValueFromTable VALUES ();
INSERT INTO AutoIncrementWithMaxValueFromTable VALUES ();

ผลลัพธ์:

ProductId
2500
2501

กรณีใช้งาน: การ Merge ข้อมูล, การ Sync ID ระหว่างระบบ, การ Migration ข้อมูล