Bạn có thể sử dụng câu lệnh chuẩn bị để Đặt lại MySQL AutoIncrement bằng cách sử dụng giá trị MAX từ một bảng khác.
Sau đây là cú pháp -
set @ anyVariableName1 =(select MAX (yourColumnName) from yourTableName1); SET @ anyVariableName2 =CONCAT ('ALTER TABLE yourTableName2AUTO_INCREMENT =', @ anyVariableName1); CHUẨN BỊ YourStatementName FROM @ anyVariableNameCú pháp trên sẽ đặt lại MySQL auto_increment bằng cách sử dụng giá trị tối đa từ một bảng khác. Để hiểu cú pháp trên, chúng ta hãy tạo hai bảng. Bảng đầu tiên sẽ chứa các bản ghi và bảng thứ hai sẽ sử dụng giá trị lớn nhất từ bảng đầu tiên và sử dụng cho thuộc tính auto_increment.
Truy vấn để tạo bảng như sau -
mysql> tạo bảng FirstTableMaxValue -> (-> MaxNumber int ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,64 giây)Chèn bản ghi từ bảng bằng lệnh chèn. Truy vấn như sau -
mysql> chèn vào giá trị FirstTableMaxValue (100); Truy vấn OK, 1 hàng bị ảnh hưởng (0,15 giây) mysql> chèn vào giá trị FirstTableMaxValue (1000); Truy vấn OK, 1 hàng bị ảnh hưởng (0,19 giây) mysql> chèn vào giá trị FirstTableMaxValue ( 2000); Truy vấn OK, 1 hàng bị ảnh hưởng (0,12 giây) mysql> chèn vào giá trị FirstTableMaxValue (90); Truy vấn OK, 1 hàng bị ảnh hưởng (0,15 giây) mysql> chèn vào giá trị FirstTableMaxValue (2500); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,17 giây) mysql> chèn vào giá trị FirstTableMaxValue (2300); Truy vấn OK, 1 hàng bị ảnh hưởng (0,12 giây)Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau -
mysql> select * from FirstTableMaxValue;Đầu ra
+ ----------- + | MaxNumber | + ----------- + | 100 || 1000 || 2000 || 90 || 2500 || 2300 | + ----------- + 6 hàng trong bộ (0,05 giây)Bây giờ bạn có thể tạo một bảng thứ hai. Truy vấn để tạo bảng thứ hai như sau -
mysql> tạo bảng AutoIncrementWithMaxValueFromTable -> (-> ProductId int not null auto_increment, -> Khóa chính (ProductId) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (1,01 giây)Ở đây tôi sẽ bao gồm một câu lệnh sẽ nhận giá trị tối đa từ bảng đầu tiên và đặt giá trị tối đa thành thuộc tính auto_increment cho bảng thứ hai. Truy vấn như sau -
mysql> set @ v =(select MAX (MaxNumber) from FirstTableMaxValue); Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) mysql> SET @ Value2 =CONCAT ('ALTER TABLE AutoIncrementWithMaxValueFromTableAUTO_INCREMENT =', @v); Truy vấn OK , 0 hàng bị ảnh hưởng (0,00 giây) mysql> CHUẨN BỊ myStatement TỪ @ value2; Truy vấn OK, 0 hàng bị ảnh hưởng (0,29 giây) Câu lệnh readymysql> thực thi myStatement; Truy vấn OK, 0 hàng bị ảnh hưởng (0,38 giây) Bản ghi:0 Bản sao:0 Cảnh báo:0Bây giờ chúng tôi đã thêm giá trị tối đa là 2500 từ bảng đầu tiên sang bảng thứ hai. Giờ đây, bạn có thể chèn bản ghi vào bảng bắt đầu từ 2500, 2501, v.v.
Truy vấn để chèn bản ghi trong bảng thứ hai như sau -
mysql> chèn vào giá trị AutoIncrementWithMaxValueFromTable (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,24 giây) mysql> chèn vào giá trị AutoIncrementWithMaxValueFromTable (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,10 giây)Kiểm tra tất cả các bản ghi từ bảng bằng lệnh select. Truy vấn như sau -
mysql> select * từ AutoIncrementWithMaxValueFromTable;Đầu ra
+ ----------- + | ProductId | + ----------- + | 2500 || 2501 | + ----------- + 2 hàng trong bộ (0,00 giây)