Подтвердить что ты не робот

Мне нужно auto_increment поле в MySQL, которое не является первичным ключом

Сейчас у меня есть таблица, чей первичный ключ - это поле auto_increment. Однако мне нужно установить первичный ключ как username, date (чтобы не было дублированного имени пользователя с датой).

Мне нужно поле auto_increment, однако, чтобы внести изменения в информацию о строке (добавление и удаление).

Что обычно делается с этой ситуацией?

Спасибо!

4b9b3361

Ответ 1

Просто установите уникальный индекс на композите (имя пользователя, дата).

ALTER TABLE `table` ADD UNIQUE INDEX `name` (`username`, `date`);

В качестве альтернативы вы можете попробовать

ALTER TABLE `table` DROP PRIMARY KEY, ADD PRIMARY KEY(`username`,`date`);

и я думаю, что в последнем случае вам нужно, чтобы эти столбцы были объявлены NOT NULL.

Ответ 2

Вместо этого измените текущий первичный ключ на уникальный ключ:

ALTER TABLE table DROP PRIMARY KEY, ADD UNIQUE KEY(username,date);

Функция auto_increment будет нормально работать после этого без каких-либо проблем. Вы также должны поместить уникальный ключ в поле auto_increment, чтобы использовать для обработки строк:

ALTER TABLE table ADD UNIQUE KEY(id);

Ответ 3

Используйте что-то вроде:

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user VARCHAR(32) NOT NULL,
  thedate DATE NOT NULL,
  UNIQUE(user,thedate)
);

Если у вас уже есть таблица и просто хотите добавить уникальное ограничение на user + thedate, запустить

ALTER TABLE users  ADD UNIQUE KEY user_date_idx (user,  thedate);

Ответ 4

Я знаю, что это старый вопрос, вот как я решил проблему -

ALTER TABLE `student_info` ADD `sn` INT(3) UNIQUE NOT NULL AUTO_INCREMENT FIRST