2009-11-27 42 views
32

Trong bảng của tôi tbphotos tôi có 100 bản ghi thì tôi đã xóa tất cả, bây giờ tôi muốn khởi động lại dữ liệu nhập tôi thấy rằng khóa chính của tôi không bắt đầu từ 1, nhưng nó bắt đầu từ 101, có cách nào không? việc -I trong "quản trị Mysql"Đặt lại khóa chính trong mysql?

nhờ

Trả lời

64

alter table foo AUTO_INCREMENT = 1

+1

cảm ơn tất cả câu trả lời. – Kaveh

23

Bạn có thể thiết lập lại các autoincrement như thế này:

ALTER TABLE tablename AUTO_INCREMENT = 1 

Nhưng nếu bạn đang dựa vào các giá trị autoincrement, chương trình của bạn rất mong manh. Nếu bạn cần gán các số liên tiếp cho các bản ghi để chương trình của bạn hoạt động, bạn nên tạo một cột riêng cho điều đó và không sử dụng ID tự động tăng cơ sở dữ liệu cho mục đích này.

+7

Bạn có thể giải thích tại sao sử dụng giá trị tăng tự động làm cho chương trình của bạn trở nên mong manh. – Ben

2

Nếu bạn sử dụng TRUNC thay vì xóa hồ sơ theo cách thủ công, khóa chính của bạn sẽ được đặt lại.

+0

TRUNCVATE không đặt lại auto_id trên bảng INNODB – Slashterix

+1

@Slashterix - Các tài liệu chỉ định khác: http: //dev.mysql.com/doc/refman/5.7/en/truncate-table.html ... Chỉnh sửa: Tôi vừa mới nhận ra câu trả lời và nhận xét này bao nhiêu tuổi. –

+0

@ParrisVarney Cảm ơn, bạn đã đúng. Tôi đã nhầm lẫn về hành vi được mô tả ở đây http://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization – Slashterix

-1
DBCC CHECKIDENT (yourTable, RESEED, 0); 

này làm việc cho tôi :)

+0

Đây là máy chủ SQL, trong khi câu hỏi đã được hỏi về MySQL của tôi. – Donnie

0

Đoạn code dưới đây là tốt nhất nếu bạn có một số dữ liệu trong cơ sở dữ liệu đã được nhưng muốn đặt lại ID từ 1 mà không xóa dữ liệu. Sao chép và chạy trong lệnh SQL

ALTER TABLE members DROP ID; 
ALTER TABLE members AUTO_INCREMENT = 1; 
ALTER TABLE members ADD ID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 
Các vấn đề liên quan