MySQL không có object SEQUENCE riêng như Oracle/PostgreSQL. Thay vào đó, dùng cột AUTO_INCREMENT.
Tạo sequence cơ bản
mysql> CREATE TABLE SequenceDemo (
-> SequenceId INT AUTO_INCREMENT,
-> PRIMARY KEY(SequenceId)
-> );
mysql> INSERT INTO SequenceDemo VALUES(), (), (), (), (); -- chèn 5 hàng
mysql> SELECT * FROM SequenceDemo;
+------------+
| SequenceId |
+------------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------------+
Đặt giá trị khởi đầu khác (ví dụ 500)
mysql> ALTER TABLE SequenceDemo AUTO_INCREMENT = 500; Query OK, 0 rows affected (0.17 sec) mysql> INSERT INTO SequenceDemo VALUES(), (), (); mysql> SELECT * FROM SequenceDemo; +------------+ | SequenceId | +------------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 500 | | 501 | | 502 | +------------+
Sau 5 bản ghi đầu, sequence nhảy lên 500 và tiếp tục tăng 1.
Mẹo nâng cao
- Dùng bảng riêng chỉ chứa cột
AUTO_INCREMENTđể mô phỏng sequence đa dụng. - Kết hợp
LAST_INSERT_ID()để lấy giá trị vừa sinh. - MySQL 8.0+ hỗ trợ
SEQUENCEtrong engineInnoDBcho replication (ít dùng).