Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL trả về gì khi chúng ta thay đổi giá trị AUTO_INCREMENT nhỏ hơn số thứ tự hiện tại?

Khi chúng tôi sử dụng AUTO_INCREMENT trên một cột MySQL, số thứ tự luôn tăng theo thứ tự tăng dần bắt đầu từ giá trị mặc định 1 hoặc từ giá trị chúng tôi chỉ định.

Đó là lý do, MySQL không cho phép thay đổi giá trị AUTO_INCREMENT thành giá trị nhỏ hơn số thứ tự hiện tại. Nó có thể được hiểu với sự trợ giúp của ví dụ sau -

Ví dụ

Trong ví dụ này, giả sử chúng ta có một bảng tên là 'emp1' và trong khi tạo bảng, chúng ta chỉ định AUTO_INCREMENT VALUE thành 100. Do đó sau khi chèn các giá trị trong bảng, chuỗi sẽ bắt đầu từ 100 trở đi. được nhìn thấy từ đầu ra của truy vấn sau -

mysql> Select * from emp1;
+-----+---------+
| id | NAME     |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
+-----+---------+
2 rows in set (0.00 sec)

Bây giờ khi chúng tôi cố gắng thay đổi giá trị AUTO_INCREMENT thành 90 với sự trợ giúp của truy vấn ALTER TABLE, MySQL không trả về lỗi và cảnh báo vì truy vấn ổn nhưng khi chúng tôi chèn giá trị mới vào bảng, MySQL sẽ so sánh các giá trị đã chỉ định Giá trị AUTO_INCREMENT với số thứ tự hiện tại. Vì giá trị AUTO_INCREMENT được chỉ định (90) nhỏ hơn số thứ tự hiện tại (101) nên MySQL bắt đầu tích lũy các giá trị mới từ 102 trở đi, có thể quan sát được từ các truy vấn sau -

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90;
Query OK, 2 rows affected (0.31 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Insert into emp1(name) values('Aryan');
Query OK, 1 row affected (0.08 sec)

mysql> Select * from emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
| 102 | Aryan   |
+-----+---------+
3 rows in set (0.00 sec)

Ngược lại, nếu chúng tôi cố gắng thay đổi AUTO_INCREMENT thành giá trị cao hơn số thứ tự hiện tại thì MySQL sẽ bắt đầu tích lũy các giá trị mới từ giá trị được chỉ định.

Để làm rõ hơn trong bảng ‘emp1’, chúng tôi thay đổi giá trị AUTO_INCREMENT thành 108, cao hơn số thứ tự hiện tại, do đó MySQL bắt đầu tích lũy các giá trị được chèn mới từ giá trị AUTO_INCREMENT được chỉ định, tức là từ 108 trở đi.

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108;
Query OK, 3 rows affected (0.30 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> Insert into emp1(name) values('Daksh');
Query OK, 1 row affected (0.04 sec)

mysql> Insert into emp1(name) values('Yashraj');
Query OK, 1 row affected (0.06 sec)

mysql> Select * from emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
| 102 | Aryan   |
| 108 | Daksh   |
| 109 | Yashraj |
+-----+---------+
5 rows in set (0.00 sec)