2013-04-19 18 views
8

Tôi muốn chèn các giá trị vào cột mysql innodb Auto_Increment.Cách chèn các giá trị vào cột nhận dạng tự động trong MYSQL

Tôi đang tải một số dữ liệu từ bảng cũ sang bảng mới có nhận dạng và cần giữ lại các giá trị hiện có từ bảng cũ, vì vậy tôi cần giữ nguyên giá trị Id hiện tại, nhưng giữ cột Auto_Increment cho mới giá trị.

Trong MS T-SQL, tôi sẽ bắt đầu insert tập lệnh truy vấn của mình với SET SET IDENTITY_INSERT MyTable ON và kết thúc truy vấn với SET SET IDENTITY_INSERT MyTable OFF.

Làm cách nào để tôi có thể thực hiện tương tự trong MySQL?

+0

Tại sao? Giá trị MySQL cung cấp tự động không phù hợp? –

+0

Tại sao cột Tự động nhận dạng nếu bạn cần chèn vào đó? –

+0

Cột tự động nhận dạng được điền tự động bởi MySQL. Nếu bạn muốn một số khác, bạn nên duy trì một trường riêng biệt. –

Trả lời

5

Chỉ cần như bình thường:

INSERT INTO my_table(auto_inc_field, other_field) VALUES(8547, 'some value'); 

Nếu các giá trị được đến từ bảng khác, bạn có thể sử dụng:

INSERT INTO my_table(auto_inc_field, other_field) 
SELECT auto_inc_field, other_field FROM other_table; 
+2

Và nếu bạn nhập dữ liệu, ở đó bạn đi với một giá trị id thương hiệu mới sẽ tạo ra nếu số nguyên của bạn trong auto_inc_field là 0 hoặc NULL. "vi phạm ràng buộc khóa ngoại xxx". Câu trả lời này xứng đáng được downvoted chứ không phải là câu hỏi ... –

+0

Nếu bất cứ ai tình cờ gặp điều này giống như tôi, và bạn đã chèn các hàng với một ID. Bạn có thể đặt auto_inc_field theo cách thủ công bằng cách sử dụng 'ALTER TABLE test AUTO_INCREMENT = 10' - trong đó 10 là giá trị tiếp theo được sử dụng cho hàng được chèn. –