Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Reset AUTO_INCREMENT bằng giá trị MAX từ bảng khác trong MySQL?

Sử dụng Prepared Statement để gán giá trị AUTO_INCREMENT của bảng B = MAX(cot) của bảng A.

Các bước:

-- Bảng A: chứa giá trị MAX
CREATE TABLE FirstTableMaxValue (MaxNumber INT);
INSERT INTO FirstTableMaxValue VALUES (100), (1000), (2000), (90), (2500), (2300);

-- Bảng B: cần set AUTO_INCREMENT bắt đầu từ MAX của bảng A
CREATE TABLE AutoIncrementWithMaxValueFromTable (
    ProductId INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(ProductId)
);

-- Thực thi prepared statement
SET @v = (SELECT MAX(MaxNumber) FROM FirstTableMaxValue);  -- @v = 2500
SET @sql = CONCAT('ALTER TABLE AutoIncrementWithMaxValueFromTable AUTO_INCREMENT = ', @v);
PREPARE stmt FROM @sql;
EXECUTE stmt;

Kiểm tra: Chèn 2 bản ghi mới vào bảng B:

INSERT INTO AutoIncrementWithMaxValueFromTable VALUES (), ();

Kết quả

+-----------+
| ProductId |
+-----------+
|      2500 |
|      2501 |
+-----------+

Giải thích: PREPARE + EXECUTE cho phép xây dựng câu lệnh DDL động với biến. Cách này hữu ích khi đồng bộ ID giữa các bảng hoặc migration dữ liệu.