Próbuję zmodyfikować tabelę, aby AUTO_INCREMENT
po fakcie była kolumną klucza podstawowego . Próbowałem następującego SQL, ale otrzymałem powiadomienie o błędzie składni.
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
Czy robię coś źle, czy to nie jest możliwe?
+ -------------------- + | WERSJA () | + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
sql
mysql
alter-table
Krzyż
źródło
źródło
Roman ma rację, ale należy zauważyć, że kolumna auto_increment musi być częścią KLUCZA PODSTAWOWEGO lub UNIKALNEGO KLUCZA (aw prawie 100% przypadków powinna to być jedyna kolumna, która składa się z KLUCZA PODSTAWOWEGO):
źródło
W moim przypadku działało to tylko wtedy, gdy wstawiłem
not null
. Myślę, że to ograniczenie.źródło
Aby to zrobić, SQL:
Istnieje kilka powodów, dla których SQL może nie działać. Najpierw musisz ponownie określić typ danych (
INT
w tym przypadku). Ponadto kolumna, którą próbujesz zmienić, musi zostać zindeksowana (nie musi to być klucz podstawowy, ale zwykle tego właśnie potrzebujesz). PonadtoAUTO_INCREMENT
dla każdej tabeli może być tylko jedna kolumna. Możesz więc uruchomić następujący SQL (jeśli twoja kolumna nie jest zaindeksowana):Więcej informacji można znaleźć w dokumentacji MySQL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html w celu zmodyfikowania składni kolumn i http://dev.mysql.com/doc /refman/5.1/en/create-table.html, aby uzyskać więcej informacji na temat określania kolumn.
źródło
Musisz określić typ kolumny przed
auto_increment
dyrektywą, tjALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT
.źródło
MODIFY COLUMN
AUTO_INCREMENT
jest częścią typu danych kolumny, musisz ponownie zdefiniować pełny typ danych dla kolumny:(
int
wzięty jako przykład, powinieneś ustawić go na typ, który wcześniej miała kolumna)źródło
Możesz to zrobić w następujący sposób:
źródło
AUTO_INCREMENT
jest częścią typu danych kolumny, musisz ponownie zdefiniować pełny typ danych dla kolumny:(int jako przykład, powinieneś ustawić go na typ, który wcześniej miała kolumna)
źródło
Możesz użyć poniższego zapytania, aby automatycznie zwiększać wartość_dokumentu
Preferowane jest również utworzenie klucza podstawowego document_id
źródło
Poniższe oświadczenie działa. Pamiętaj, że musisz ponownie wspomnieć o typie danych dla nazwy kolumny (ponownie określ typ danych, którym była wcześniej kolumna).
źródło
Jeśli żadna z powyższych czynności nie działa, spróbuj tego. Tak zrobiłem w MYSQL i tak, musisz dwukrotnie wpisać nazwę kolumny (id_dokumentu).
źródło
Aby zmodyfikować kolumnę w mysql, używamy modyfikować i modyfikować słowa kluczowe. Załóżmy, że utworzyliśmy tabelę:
Teraz chcemy zmodyfikować typ identyfikatora kolumny na liczbę całkowitą z przyrostem automatycznym. Możesz to zrobić za pomocą polecenia:
źródło
Poprzednia składnia tabeli:
Aby zmienić TransactionId na auto increment, użyj tego zapytania
źródło
źródło
Takie jak to:
alter table document modify column id int(11) auto_increment;
źródło
Gdy ponownie definiujesz kolumnę, musisz ponownie określić typ danych i dodać do niego auto_increment, ponieważ jest on częścią typu danych.
źródło
Ustawienie kolumny jako klucza podstawowego i auto_increment jednocześnie:
źródło
ALTER TABLE nazwa_tabeli MODIFY COLUMN id typ danych auto_increment;
źródło
Skorzystaj z następujących zapytań:
źródło