2012-05-25 34 views
12

tôi có bảng có ID, ID này là tăng tự động và khóa chính, lần đầu tiên tôi chèn vào bảng đó, ID bắt đầu từ 0, nhưng sau khi tôi xóa tất cả các giá trị từ bảng đó và được chèn lại vào nó, ID không bắt đầu từ 0, nhưng bắt đầu từ giá trị cuối cùng mà ID có, điều gì xảy ra sai? tôi có thể đặt lại giá trị thành 0 không?tăng tự động mysql ID không bắt đầu từ 0

+3

Không có gì là sai. Đây là hành vi mong đợi. Đồng hồ đo của ô tô của bạn có bắt đầu từ 0 mỗi lần bạn đi xe không? –

+0

và vì vậy tôi có thể làm gì, tôi đã chèn hơn 300 lần vào các bảng của mình, khi tôi thấy bài tập về nhà cho giáo viên, điều đó không phải là điều tốt để cho khách hàng bắt đầu từ 301, phải không? – LinCR

+1

Nếu bạn đã thực hiện chèn từ tập lệnh, bạn có thể thả bảng và sau đó chạy lại tập lệnh. Nếu Phụ trang có hướng dẫn sử dụng, bạn sẽ không muốn chèn lại, phải không ?. Dù sao, bạn đã có 300 khách hàng tạm thời/thử nghiệm mà bạn đã xóa. Nếu tôi là giáo viên của bạn, nó sẽ không là vấn đề. –

Trả lời

16

Bạn có thể có thể cắt ngắn bảng sử dụng

TRUNCATE `table` 

Truncate sẽ xóa tất cả các dữ liệu trong bảng. Lưu ý rằng việc sử dụng TRUNCATE cũng sẽ không kích hoạt bất kỳ trình kích hoạt DELETE nào như DELETE.

Hoặc bạn có thể thiết lập lại các tính sử dụng

ALTER TABLE `table` AUTO_INCREMENT = 1 

Tuy nhiên nó là hành vi mong đợi. Đừng làm điều sau trừ khi bảng thật sự trống.

+0

nó hoạt động cảm ơn bạn – LinCR

1

Bạn phải sử dụng câu lệnh TRUNCATE để khởi động lại auto_increment từ 1. Đó là hành vi bình thường để tránh bị phanh.

+0

bạn sẽ cho tôi một ví dụ xin vui lòng, và cảm ơn bạn – LinCR

+0

THANH TOÁN Chú ý rằng bảng TRUNCATE sẽ phá hủy bảng của bạn ... – dAm2K

+0

TRUNCATE TABLE your_table_name – dAm2K

3

Xóa tất cả các phần tử trong bảng không ảnh hưởng đến khóa chính. Khóa chính sẽ vẫn tự động tăng từ giá trị cuối cùng của nó.

Nếu bạn muốn thiết lập lại các khóa chính, bạn có thể thử để truncate bảng:

TRUNCATE TABLE yourtable; 

này xóa tất cả các yếu tố từ yourtable. Cho dù nó đặt lại khóa chính phụ thuộc vào cơ sở dữ liệu của bạn. Với Mysql nó sẽ làm việc, như Mysql xóa và tái tạo bảng trên TRUNCATE.

+0

tôi đã nhận bạn, cảm ơn bạn – LinCR

5

Để chèn một khóa chính với giá trị 0, thực hiện đầu tiên yêu cầu sau đây:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
Các vấn đề liên quan