Mam już istniejącą tabelę zawierającą „fname”, „lname”, „email”, „password” i „ip”. Ale teraz chcę mieć kolumnę z automatycznym zwiększaniem. Jednak kiedy wchodzę:
ALTER TABLE users
ADD id int NOT NULL AUTO_INCREMENT
Otrzymuję następujące informacje:
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Jakakolwiek rada?:)
mysql
sql
definition
auto-increment
Charles Jenkins
źródło
źródło
describe users
Odpowiedzi:
Spróbuj tego
ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT;
dla istniejącego klucza podstawowego
źródło
FIRST
do zapytania, aby ustawić je jako pierwsze w tej tabeli.ALTER TABLE users DROP PRIMARY KEY, ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
FIRST
np.ALTER TABLE tbl1 ADD id INT PRIMARY KEY AUTO_INCREMENT FIRST
Jeśli nie obchodzi Cię, czy auto-id jest używane jako
PRIMARY KEY
, możesz to zrobićALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST;
Właśnie to zrobiłem i zadziałało świetnie.
źródło
FIRST
tam robi?Jeśli chcesz dodać AUTO_INCREMENT do istniejącej tabeli, musisz uruchomić następujące polecenie SQL:
ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key
źródło
Multiple primary key defined
ponieważ masz już klucz podstawowy na stole. Tabela może mieć tylko jeden klucz podstawowy. Ponów powyższe polecenie na stole, gdy nie ma klucza podstawowegoALTER TABLE users DROP PRIMARY KEY, ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
Najpierw musisz usunąć klucz podstawowy tabeli
ALTER TABLE nametable DROP PRIMARY KEY
a teraz możesz dodać autoincrement ...
ALTER TABLE nametable ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
źródło
Duplicate column name 'id'
Cóż, najpierw musisz upuścić
auto_increment
iprimary key
masz, a następnie dodać swoje, w następujący sposób:-- drop auto_increment capability alter table `users` modify column id INT NOT NULL; -- in one line, drop primary key and rebuild one alter table `users` drop primary key, add primary key(id); -- re add the auto_increment capability, last value is remembered alter table `users` modify column id INT NOT NULL AUTO_INCREMENT;
źródło
Jeśli uruchomisz następujące polecenie:
ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT PRIMARY KEY;
To pokaże ci błąd:
Dzieje się tak, ponieważ to polecenie spróbuje dodać nową kolumnę o nazwie
id
do istniejącej tabeli.Aby zmodyfikować istniejącą kolumnę, musisz użyć następującego polecenia:
ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT PRIMARY KEY;
To powinno działać w przypadku zmiany istniejącego ograniczenia kolumny ....!
źródło
Usuń klucz podstawowy tabeli, jeśli istnieje:
ALTER TABLE `tableName` DROP PRIMARY KEY;
Dodanie kolumny z autoinkrementacją do tabeli:
ALTER TABLE `tableName` ADD `Column_name` INT PRIMARY KEY AUTO_INCREMENT;
Zmodyfikuj kolumnę, którą chcemy traktować jako klucz podstawowy:
alter table `tableName` modify column `Column_name` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
źródło
Po prostu zmień DODAJ na ZMIEŃ i zadziała!
Zastąpić
ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT
Do
ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT;
źródło
ALTER TABLE users CHANGE id int( 30 ) NOT NULL AUTO_INCREMENT
parametr integer jest oparty na moim domyślnym ustawieniu sql miłego dnia
źródło
ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key FIRST
źródło
W przypadku PostgreSQL musisz użyć SERIAL zamiast auto_increment.
ALTER TABLE your_table_name ADD COLUMN id SERIAL NOT NULL PRIMARY KEY
źródło
Sprawdź, czy istnieje już klucz podstawowy z inną kolumną. Jeśli tak, usuń klucz podstawowy za pomocą:
ALTER TABLE Table1 DROP CONSTRAINT PK_Table1_Col1 GO
a następnie zapisz zapytanie tak, jak jest.
źródło
ALTER TABLE `table` ADD `id` INT NOT NULL AUTO_INCREMENT unique
Spróbuj tego. Nie musisz porzucać klucza podstawowego.
źródło
Postępuj w ten sposób:
ALTER TABLE stół DROP PRIMARY KEY
ALTER TABLE twoja tabela dodaj identyfikator kolumny INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY ID (Id)
Tabela zostanie przejrzana, a funkcja AutoInc zaktualizowana.
źródło