Как создать MySQL с первичным ключом, а не с автоматическим приращением - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь создать следующую таблицу:

create table Cust (Name varchar(50) UNIQUE, Cat1 varchar(50), RowID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (Name));

Я получаю ошибку:

Неверное определение таблицы;может быть только один автоматический столбец, и он должен быть определен как ключ

Я хочу индексировать по «имени», а не по RowID.Так что даже если я закончу это:

...PRIMARY KEY (Name, RowID));

Это не удастся.Конечно ...PRIMARY KEY (RowID, Name)); работает, но это не то, что я хочу.

Может кто-нибудь помочь мне увидеть свет, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 16 ноября 2018

Вам просто нужно создать KEY (он же индекс) для столбца auto-inc.Это не обязательно должен быть первичный ключ, но он должен быть самым левым столбцом в некотором индексе.

create table Cust (
  Name varchar(50), 
  Cat1 varchar(50), 
  RowID int NOT NULL AUTO_INCREMENT, 
  PRIMARY KEY (Name),
  KEY (RowId)
);

Не добавляйте параметр UNIQUE в столбец имени.Это создает дополнительный лишний уникальный индекс, который вам не нужен.Любой PRIMARY KEY уже уникален.

Я отмечу, что auto-inc - это не то же самое, что rowid.Не ожидайте, что auto-inc будет иметь последовательные значения.

...