2013-04-27 1 views
1

У меня есть таблица вроде этого:дублированием KEY UPDATE типа поведения на нескольких столбцах

id | userid | commentid | value 
------------------------------- 

Каждому пользователю разрешено голосовать комментарий один раз. Значение может быть между -1 и 1. Есть ли простой способ для модели таблицы добиться изменения этого голосования в одном запросе, не проверяя сначала EXISTS()? Я уже думал о хеш-столбце

MD5(CONCAT(userid, commentid)) 

но есть ли лучшее решение для этого?

+2

'on duplicate key update' должен работать нормально, если у вас есть уникальный индекс, охватывающий' userid' и 'commentid'. – grossvogel

+0

Благодарим вас за этот намек. Я попробую. – Zwirbelbart

ответ

3

Просто используйте уникальный ключ на userid + commentid, и вы можете использовать ON DUPLICATE KEY UPDATE.

INSERT INTO `yourTable` (
    `userid`, 
    `commentid`, 
    `value` 
) VALUES (
    x, 
    y, 
    z 
) ON DUPLICATE KEY UPDATE 
    `value` = z 
+0

Да, это то, что мне нужно. +1 – Zwirbelbart

 Смежные вопросы

  • Нет связанных вопросов^_^