2011-01-28 25 views

Trả lời

-3

Bạn có vấn đề với việc thay đổi định nghĩa cho bất kỳ trường nào là thay đổi là "phá hoại". Cách tốt nhất là xử lý các thay đổi như thế này khi di chuyển dữ liệu. Tôi đã không làm điều này với MySQL, nhưng đã phải thêm tự động đánh số vào SQL Server. Ý tưởng cơ bản là như nhau.

Kiểm tra tài liệu, vì MySQL có thể có cơ chế để thêm tăng tự động mà không cần đặt lại trường. Nếu vậy, thực hiện nó thông qua SQL sẽ giải quyết vấn đề. Nói chung, tôi khuyên bạn không nên làm những loại thay đổi này một cách trực quan, với một công cụ, vì hầu hết các công cụ đều rất phá hoại trong quá trình methdology của chúng.

+1

Chỉ cần thêm trường mới với phpMyAdmin và mọi đường nối OK. Oredering không được thực hiện tốt, nhưng đó không phải là quan trọng. Cảm ơn – Bobo

0

"có thể có sự cố không?"

Có thể có sự cố khi chỉ chèn bản ghi. Tuy nhiên ...

Nói chung, việc thêm trường mới thường là khá an toàn để thực hiện, cho dù đó là cột tự động tăng hay không. Nó thay đổi hoặc xóa các cột có nhiều khả năng gây ra các vấn đề nếu bạn không chắc chắn về tất cả các phụ thuộc.

Để an toàn, tuy nhiên, trước tiên tôi sẽ thử trên phiên bản (thử nghiệm) và chạy (các) ứng dụng của bạn trước phiên bản thử nghiệm, chỉ để an toàn. Đó là thực hành tốt để sử dụng một môi trường thử nghiệm không có vấn đề gì anyway.

Bạn có thể cụ thể hơn về loại rắc rối bạn đang lo lắng không?

34

Bạn có thể thêm làm điều đó mà không gặp vấn đề chỉ nếu bảng của bạn không có mối quan hệ với người khác.

Bạn phải xóa khóa chính cũ và tải lên bảng phù hợp (có thể thêm chỉ mục duy nhất trên khóa chính cũ).

Tiến hành như thế:

  • Thực hiện một bãi chứa của cơ sở dữ liệu của bạn

  • Tháo khóa chính như thế

ALTER TABLE XXX DROP PRIMARY KEY 
  • Thêm cột mới như thế
ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id) 

Bảng sẽ được xem xét và cập nhật AutoInc.

7

Đây là giải pháp mà tôi đã cố gắng với MySQL Workbench:

ALTER TABLE `tableName` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ; 

Tôi không biết nếu điều này là đúng cách, nhưng tôi đã không nhận thấy bất kỳ vấn đề trong EE Application Java của tôi được nêu ra.

+0

Tôi nghĩ id là một phần của khóa nếu không nó sẽ gây ra lỗi. – siddhusingh

21

này sẽ thêm một increment ID tự động để bảng MySQL của bạn:

ALTER TABLE `your_table_name` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

Tùy thuộc vào số lượng dữ liệu trên bàn của bạn có thể mất một vài phút để hoàn thành.

0

Bạn có thể cần phải thêm nó như là khóa chính đầu tiên trước khi bạn có thể làm cho nó như là tự động tăng lĩnh vực

Bạn có thể nhìn vào ví dụ này

ALTER TABLE `category` 
ADD PRIMARY KEY (`cat_id`); 
ALTER TABLE `category` 
MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT; 
1

tôi làm việc với dữ liệu rất lớn và đã có một id cột đầy với NULLS. Tôi đã chọn để chạy SQL sau đây để điền vào với số ... sau đó tôi đặt cột id là khóa chính của tôi.

set @row = 0; 
UPDATE philadelphia.msg_geo_sal SET id = @row := @row + 1; 
Các vấn đề liên quan