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

#mysql #unique-index

#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';
  

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

Комментарии:

1. Вы пробовали это? Вы беспокоитесь о ее сбое или о том, что она плохо работает?

2. Оба. На самом деле я выполняю преобразование из одной системы в другую, и начальная таблица будет довольно массивной (4 миллиона строк сразу, ожидается, что в первые несколько недель она вырастет до 20 миллионов), поэтому я хочу быть абсолютно уверен, что с самого начала действую правильно.

Ответ №1:

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

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

Комментарии:

1. Я не представлял, что могу сделать это в таблице InnoDB. Спасибо за предложение.