stackoverflow

Câu hỏi

Làm cách nào để đặt lại AUTO_INCREMENT của trường?

Tôi muốn nó bắt đầu đếm lại từ đầu là 1.

Câu trả lời

Bạn có thể đặt lại bộ đếm bằng lệnh sql sau:

ALTER TABLE tablename AUTO_INCREMENT = 1

Lưu ý rằng bạn không thể đặt lại bộ đếm về giá trị nhỏ hơn hoặc bằng bất kỳ giá trị nào đã được sử dụng. Đối với MyISAM, nếu giá trị nhỏ hơn hoặc bằng giá trị lớn nhất hiện có trong cột AUTO_INCREMENT, giá trị được đặt lại thành giá trị tối đa hiện tại cộng thêm một. Đối với InnoDB, nếu giá trị nhỏ hơn giá trị lớn nhất hiện tại trong cột, không có lỗi nào xảy ra và giá trị trình tự hiện tại không bị thay đổi.

Bạn có thể hiểu như sau, ví dụ bạn có một bảng có trường ID và AUTO_INCREMENT = 3

IDNameDescription
1A
2B
3C

Nếu bạn đặt lệnh set lại AUTO_INCREMENT = 1 thì sẽ không thay đổi được giá trị về 1.

  • Với MyISAM table, khi bạn set AUTO_INCREMENT = 1, thì AUTO_INCREMENT sẽ được cộng lên 1 và thành 4.
  • Với InnoDB, không có điều gì xảy ra cả AUTO_INCREMENT vẫn sẽ là 3.

Tuy nhiên nếu bạn đặt AUTO_INCREMENT = 100 thì mọi thứ sẽ hoạt động bình thường. Vì 100 chưa từng được sử dụng và lớn hơn AUTO_INCREMENT hiện tại. Việc đặt lại AUTO_INCREMENT = 1 thường xảy ra khi bạn đã xóa hết dữ liệu và cần thay đổi AUTO_INCREMENT về ban đầu = 1.

stackoverflow

Link bài viết: https://stackoverflow.com/questions/8923114/how-to-reset-auto-increment-in-mysql

stackoverflow

Leave a comment

Your email address will not be published. Required fields are marked *