Мне нужно auto_increment поле в MySQL, которое не является первичным ключом
Сейчас у меня есть таблица, чей первичный ключ - это поле auto_increment
. Однако мне нужно установить первичный ключ как username
, date
(чтобы не было дублированного имени пользователя с датой).
Мне нужно поле auto_increment
, однако, чтобы внести изменения в информацию о строке (добавление и удаление).
Что обычно делается с этой ситуацией?
Спасибо!
Ответы
Ответ 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