Giá trị AUTO_INCREMENT của MySQL bắt đầu từ 1 nhưng chúng ta có thể thay đổi nó bằng hai cách sau:
Với ALTER TABLE
Chúng ta dùng ALTER TABLE để thay đổi giá trị bắt đầu của AUTO_INCREMENT như sau:
ALTER TABLE table_name AUTO_INCREMENT = value;
Ví dụ
Giả sử ta tạo bảng có cột 'id' là AUTO_INCREMENT. Nếu chèn giá trị, dãy số bắt đầu từ 1 như thấy trong truy vấn sau:
mysql> CREATE TABLE EMP(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10));
Query OK, 0 rows affected (0.07 sec)
mysql> INSERT INTO EMP(Name) VALUES('Aryan');
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO EMP(Name) VALUES('Yash');
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM EMP;
+----+-------+
| id | NAME |
+----+-------+
| 1 | Aryan |
| 2 | Yash |
+----+-------+
2 rows in set (0.00 sec)
Bây giờ, nếu muốn thay đổi số dãy sau đó, ta dùng ALTER TABLE thay đổi AUTO_INCREMENT:
mysql> ALTER TABLE emp AUTO_INCREMENT = 10;
Query OK, 2 rows affected (0.25 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> INSERT INTO EMP(Name) VALUES('Daksh');
Query OK, 1 row affected (0.03 sec)
mysql> INSERT INTO EMP(Name) VALUES('Shayra');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM EMP;
+----+--------+
| id | NAME |
+----+--------+
| 1 | Aryan |
| 2 | Yash |
| 10 | Daksh |
| 11 | Shayra |
+----+--------+
4 rows in set (0.00 sec)
Truy vấn trên thay đổi AUTO_INCREMENT thành 10, do đó chèn mới sau đó sẽ có số dãy từ 10 trở đi.
Với CREATE TABLE
Chúng ta cũng có thể thay đổi giá trị AUTO_INCREMENT khi tạo bảng. Làm bằng cách chỉ định giá trị AUTO_INCREMENT trong CREATE TABLE như sau:
CREATE TABLE (Column1 INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Column2 data_type) AUTO_INCREMENT = value;
Ví dụ
mysql> CREATE TABLE EMP1(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10)) AUTO_INCREMENT = 100; Query OK, 0 rows affected (0.11 sec)
Truy vấn trên chỉ định AUTO_INCREMENT = 100 khi tạo bảng. Bây giờ nếu chèn giá trị, dãy số sẽ bắt đầu từ 100 thay vì mặc định 1 như sau:
mysql> INSERT INTO emp1(name) VALUES('Sohan');
Query OK, 1 row affected (0.04 sec)
mysql> INSERT INTO emp1(name) VALUES('Harshit');
Query OK, 1 row affected (0.05 sec)
mysql> SELECT * FROM emp1;
+-----+---------+
| id | NAME |
+-----+---------+
| 100 | Sohan |
| 101 | Harshit |
+-----+---------+
2 rows in set (0.00 sec)