ตั้งค่า 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 ข้อมูล