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

Cách tạo và sử dụng Sequence (dãy số tự động) trong MySQL

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ợ SEQUENCE trong engine InnoDB cho replication (ít dùng).