Hiểu cách AUTO_INCREMENT hoạt động.
Thuộc tính AUTO_INCREMENT dùng tạo định danh duy nhất cho hàng mới. Xem cách câu lệnh hoạt động. Trước đó, xem truy vấn:
Truy vấn
CREATE TABLE tableName (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tableName (name) VALUES ('val1'),('val2'),('val3'), ('val4');
SELECT * FROM tableName;
Kết quả
+----+---------+ | id | name | +----+---------+ | 1 | val1 | | 2 | val2 | | 3 | val3 | | 4 | val4 | +----+---------+
Trong truy vấn trên, không chỉ định giá trị cho cột AUTO_INCREMENT, nên MySQL tự gán dãy số cho cột id. Giá trị 0 cũng có thể gán tường minh để dãy bắt đầu từ 0. Chỉ làm được nếu chế độ SQL NO_AUTO_VALUE_ON_ZERO không bật.
- Nếu cột khai báo
NOT NULL, có thể gánNULLcho cột đó tạo dãy số. - Khi chèn giá trị vào cột
AUTO_INCREMENT, cột đặt thành giá trị đó, dãy số reset để tự tạo giá trị trong phạm vi tuần tự từ giá trị cột lớn nhất. - Cập nhật cột
AUTO_INCREMENThiện có sẽ reset dãyAUTO_INCREMENT. - Giá trị
AUTO_INCREMENTtự động tạo gần nhất lấy bằngLAST_INSERT_ID()trong SQL hoặcmysql_insert_id()C API. - Các hàm này connection-specific, giá trị trả về không bị ảnh hưởng bởi kết nối khác insert.
- Kiểu dữ liệu integer nhỏ nhất cho cột
AUTO_INCREMENTcó thể dùng, đủ lớn chứa giá trị dãy tối đa user yêu cầu. - Khi cột đạt giới hạn trên của kiểu dữ liệu, thử tạo dãy số lại nhưng thất bại.
Do đó, dùng thuộc tính UNSIGNED nếu có thể để cho phép phạm vi giá trị lớn hơn trong cột AUTO_INCREMENT.