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

Chèn giá trị tự định vào cột AUTO_INCREMENT trong MySQL

Tóm tắt

MySQL cho phép chèn giá trị rõ ràng vào cột AUTO_INCREMENT miễn là giá trị đó chưa tồn tại và không vi phạm PRIMARY KEY/UNIQUE. Giá trị AUTO_INCREMENT tiếp theo sẽ được điều chỉnh tự động.

Ví dụ

1. Tạo bảng

CREATE TABLE InsertValueInAutoIncrement (
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName VARCHAR(20)
);

2. Chèn dữ liệu混合 (tự động + thủ công)

INSERT INTO InsertValueInAutoIncrement (UserName) VALUES ('John');    -- UserId = 1
INSERT INTO InsertValueInAutoIncrement (UserName) VALUES ('Carol');   -- UserId = 2
INSERT INTO InsertValueInAutoIncrement (UserName) VALUES ('Sam');     -- UserId = 3
INSERT INTO InsertValueInAutoIncrement (UserName) VALUES ('Bob');     -- UserId = 4
INSERT INTO InsertValueInAutoIncrement (UserId, UserName) VALUES (100, 'Maxwell'); -- UserId = 100
INSERT INTO InsertValueInAutoIncrement (UserName) VALUES ('James');   -- UserId = 101
INSERT INTO InsertValueInAutoIncrement (UserId, UserName) VALUES (1000, 'Larry'); -- UserId = 1000

3. Kết quả

+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | John     |
| 2      | Carol    |
| 3      | Sam      |
| 4      | Bob      |
| 100    | Maxwell  |
| 101    | James    |
| 1000   | Larry    |
+--------+----------+

Quy tắc quan trọng

  • Giá trị chèn thủ công phải duy nhất (không trùng khóa chính).
  • Sau khi chèn giá trị lớn (1000), AUTO_INCREMENT tiếp theo sẽ là 1001.
  • Không thể chèn NULL vào cột NOT NULL AUTO_INCREMENT (sẽ tự sinh giá trị).
  • Dùng ALTER TABLE ... AUTO_INCREMENT = 1 để reset counter (chỉ khi bảng rỗng hoặc giá trị mới lớn hơn max hiện tại).

Ứng dụng thực tế

  • Nhập dữ liệu legacy có ID cố định.
  • Gộp dữ liệu từ nhiều nguồn với ID không trùng nhau.
  • Khôi phục bản sao dữ liệu giữ nguyên khóa chính.