2011-05-10 1 views
21

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

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

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

+0

Вы попробовали? Вы беспокоитесь о том, что это не удается, или о том, что он плохо работает? – outis

+0

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

ответ

12

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

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

+0

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