2013-04-19 9 views
8

Chciałbym wstawić wartości do kolumny inysb mysql tabeli Auto_Increment kolumna.Jak wstawić wartości do kolumny auto identity w MYSQL

Załaduję niektóre dane ze starej tabeli do nowej tabeli, która ma tożsamość i trzeba zachować istniejące wartości ze starej tabeli, więc muszę zachować istniejące wartości Id, ale zachowaj kolumnę Auto_Increment dla nowego wartości.

W MS T-SQL, zacznę mój skrypt zapytania insert z SET SET IDENTITY_INSERT MyTable ON i kończę zapytanie z SET SET IDENTITY_INSERT MyTable OFF.

Jak mogę zrobić to samo w MySQL?

+0

Dlaczego? Czy wartość dostarczana przez MySQL automatycznie nie jest odpowiednia? –

+0

Dlaczego kolumna jest automatyczną tożsamością, jeśli chcesz ją wstawić? –

+0

Kolumny automatycznej identyfikacji są automatycznie wypełniane przez MySQL. Jeśli chcesz mieć inny numer, powinieneś zachować oddzielne pole. –

Odpowiedz

5

Tylko nie jak zwykle:

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

Jeżeli wartości są comming z innej tabeli, można użyć:

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

A jeśli zaimportujesz dane, pojawi się nowa wartość identyfikatora, która zostanie wygenerowana, jeśli twoja liczba całkowita w auto_inc_field wynosi 0 lub NULL. "naruszenie ograniczenia klucza obcego xxx". Odpowiedź ta zasługuje raczej na ocenę niższą niż na pytanie ... –

+0

Jeśli ktoś potyka się o to tak jak ja, a Ty wstawiłeś wiersze z identyfikatorem. Możesz ręcznie ustawić auto_inc_field za pomocą "ALTER TABLE test AUTO_INCREMENT = 10" - gdzie 10 jest następną wartością, która zostanie użyta dla wstawionego wiersza. –