MySQL Сделать комбинацию столбцов уникальной

У меня есть таблица, в которой хранятся комментарии пользователей к изображениям на сайте. Таблица состоит из четырех столбцов: 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';

Дело в том, что это таблица innoDB, потому что ожидается, что она станет очень большой. Будет ли работать такой подход, несмотря на наличие первичного ключа?


person Wige    schedule 10.05.2011    source источник
comment
Вы пробовали? Вы беспокоитесь о том, что он потерпит неудачу или что он плохо работает?   -  person outis    schedule 11.05.2011
comment
Оба. На самом деле я перехожу с одной системы на другую, и исходная таблица будет довольно массивной (немедленно 4 миллиона строк, ожидается рост до 20 миллионов в первые несколько недель), поэтому я хочу быть абсолютно уверенным, что я собираюсь это сделать. правильный путь с самого начала.   -  person Wige    schedule 11.05.2011


Ответы (1)


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

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

person krtek    schedule 10.05.2011
comment
Я не понимал, что могу сделать это в таблице InnoDB. Спасибо за предложение. - person Wige; 11.05.2011