2011-01-20 27 views
5

Tôi có một bảng có cột tăng tự động. Tôi cần phải thiết lập một trong những hàng 1000 và không bao giờ chạm vào nó một lần nữa, nhưng bây giờ mà tôi đã đặt nó đến 1000, tăng tự động giữ bắt đầu từ 1001 và từ chối bắt đầu tại 1. Có cách nào để có được xung quanh này?Đặt lại MySQL auto_increment khi một số lượng lớn đã tồn tại?

+0

Làm thế nào về thiết lập nó để 0 để thay thế? :) –

+0

Nếu bạn * có thể * làm điều này để làm việc, bạn sẽ mong đợi điều gì sẽ xảy ra khi tăng tự động đạt 1000 lần nữa? –

Trả lời

3

Câu trả lời đơn giản và ngắn gọn: bạn không thể thực hiện việc này.

Nếu có thể, điều gì sẽ xảy ra nếu bạn bắt đầu tăng tự động ở mức 1 và chèn 1000 hàng? Không thể chèn lần cuối do khóa "trùng lặp".

Nếu bạn phải có mục nhập được xác định trước, với id không bao giờ thay đổi và dễ nhớ, tại sao bạn không sử dụng 0 cho điều đó? Hoặc, nếu bạn thực sự cần sử dụng 1000, vấn đề với việc cho phép các cột khác bắt đầu ở 1001 là gì?

+0

Anh ta không nên nhưng anh ta không thể. Xem câu trả lời của tôi. –

+0

điều này là ajreal chỉnh sửa câu trả lời của tôi, tôi đã viết "không thể" - và bây giờ tôi quay trở lại chỉnh sửa đó – oezi

7

Bạn không thể:

Để thay đổi giá trị của bộ đếm AUTO_INCREMENT để được sử dụng cho hàng mới, thực hiện điều này:

ALTER TABLE t2 AUTO_INCREMENT = giá trị;

Bạn không thể đặt lại bộ đếm thành 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ị tối đa hiện tại trong cột AUTO_INCREMENT, giá trị là đặt lại tối đa hiện tại cộng 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 xảy ra lỗi và giá trị chuỗi hiện tại không bị thay đổi.

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

0

Bạn có thể sử dụng MS Access liên kết đến MySQL như bảng bên ngoài, và bạn có thể thay đổi giá trị lĩnh vực bảng tự động tăng từ MS Access thông qua bản sao dán từ Excel (lần đầu tiên, bạn cần phải sắp xếp các giá trị tăng tự động trong Excel).

1

Giả sử bạn không có ID hàng khác với 1000, bạn có thể chèn hàng vào dưới cùng của bảng, sau đó bạn chỉ có thể sử dụng lệnh update:

UPDATE table.column SET id = 1000 WHERE id = current_id; 

Giả sử id là cột tự động thặng dư của bạn . Và current_id nên được thay thế bằng id mà hàng được chèn vào.

0

Bạn có thể sử dụng những điều khoản sau đây:

UPDATE tbl SET id=1000 WHERE id=current_id; 
ALTER TABLE tbl AUTO_INCREMENT=1001; 
Các vấn đề liên quan