MySQL Сделайте комбинацию столбцов уникальной - PullRequest
22 голосов
/ 11 мая 2011

У меня есть таблица, в которой хранятся комментарии пользователей к изображениям на сайте. Таблица состоит из четырех столбцов: row_id, который является первичным ключом, image_id, user_id и комментарий. Я хочу, чтобы пользователь мог оставить только один комментарий на изображение. Я просто создаю уникальный индекс по двум столбцам?

CREATE UNIQUE INDEX imgusr ON comments (image_id, user_id);

Идея состоит в том, чтобы заставить работать следующий запрос:

INSERT INTO comments SET image_id = '1', user_id = '2', comment = 'nice' ON DUPLICATE KEY UPDATE comment = 'nice';

Готчья (gotme?) В том, что таблица innoDB, потому что ожидается, что она станет очень большой. Это подход, который будет работать, несмотря на наличие первичного ключа?

1 Ответ

13 голосов
/ 11 мая 2011

Да, это будет отлично работать.

В другой теме, почему у вас был row_id? Вы можете просто поставить первичный ключ как (image_id, user_id), это тоже будет работать.

...