Hướng dẫn reset auto_increment trong mysql

Tôi googled và tìm thấy câu hỏi này, nhưng câu trả lời tôi thực sự đang tìm kiếm đáp ứng hai tiêu chí:

  1. sử dụng các truy vấn thuần túy của MySQL
  2. đặt lại mức tăng tự động của bảng hiện tại thành tối đa (id) + 1

Vì tôi không thể tìm thấy chính xác những gì tôi muốn ở đây, tôi đã thu thập câu trả lời từ nhiều câu trả lời khác nhau và chia sẻ nó ở đây.

Vài điều cần lưu ý:

  1. bảng trong câu hỏi là InnoDB
  2. bảng sử dụng trường idvới loại làm intkhóa chính
  3. cách duy nhất để làm điều này hoàn toàn trong MySQL là sử dụng thủ tục được lưu trữ
  4. hình ảnh của tôi dưới đây đang sử dụng SequelPro làm GUI. Bạn sẽ có thể điều chỉnh nó dựa trên trình soạn thảo MySQL ưa thích của bạn
  5. Tôi đã thử nghiệm điều này trên MySQL Ver 14,14 Distrib 5.5.61, cho debian-linux-gnu

Bước 1: Tạo thủ tục lưu trữ

tạo một thủ tục được lưu trữ như thế này:

DELIMITER //
CREATE PROCEDURE reset_autoincrement(IN tablename varchar(200))
BEGIN

      SET @get_next_inc = CONCAT('SELECT @next_inc := max(id) + 1 FROM ',tablename,';');
      PREPARE stmt FROM @get_next_inc; 
      EXECUTE stmt; 
      SELECT @next_inc AS result;
      DEALLOCATE PREPARE stmt; 

      set @alter_statement = concat('ALTER TABLE ', tablename, ' AUTO_INCREMENT = ', @next_inc, ';');
      PREPARE stmt FROM @alter_statement;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

Sau đó chạy nó.

Trước khi chạy, nó trông như thế này khi bạn xem phần Thủ tục lưu trữ trong cơ sở dữ liệu của bạn.

Hướng dẫn reset auto_increment trong mysql

Khi tôi chạy, tôi chỉ cần chọn thủ tục được lưu trữ và nhấn Run Selection

Hướng dẫn reset auto_increment trong mysql

Lưu ý: phần phân cách là rất quan trọng. Do đó nếu bạn sao chép và dán từ các câu trả lời được chọn hàng đầu trong câu hỏi này, chúng có xu hướng không hoạt động vì lý do này.

Sau khi tôi chạy, tôi sẽ thấy các thủ tục được lưu trữ

Hướng dẫn reset auto_increment trong mysql

Nếu bạn cần thay đổi thủ tục được lưu trữ, bạn cần xóa thủ tục được lưu trữ, sau đó chọn để chạy lại.

Bước 2: Gọi thủ tục lưu trữ

Lần này bạn chỉ có thể sử dụng các truy vấn MySQL bình thường.

call reset_autoincrement('products');

Ban đầu từ các ghi chú truy vấn SQL của riêng tôi trong https://simkimsia.com/l Library / sql-query / # mysql- reset-autoinc và được điều chỉnh cho StackOverflow

0 hữu ích 0 bình luận chia sẻ