У меня есть таблица с тремя столбцами: user_id, setting и value. Я пытаюсь использовать следующий код:
INSERT INTO 'user_settings'(user_id, setting, value)
VALUES (1234, setting_1, 500)
ON DUPLICATE KEY UPDATE user_id = 1234, setting = setting_1'
Это прекрасно работает при создании новой настройки и не создает дублирующихся записей. Проблема возникает, когда я хочу изменить значение - это не сработает после выполнения предыдущего запроса:
INSERT INTO 'user_settings'(user_id, setting, value)
VALUES (1234, setting_1, 999)
ON DUPLICATE KEY UPDATE user_id = 1234, setting = setting_1'
Строки не затрагиваются. Я явно что-то упускаю ...
ВАЖНО : Я не могу изменить базу данных (новые первичные ключи или что-то в этом роде).
ОБНОВЛЕНИЕ : Кажется, мое понимание ON DUPLICATE KEY
неверно. Но остается вопрос: как наиболее эффективно это сделать?
Ответ на комментарий ниже : «Если первичный (или уникальный) ключ (user_id, setting), то используйте: ... ON DUPLICATE KEY UPDATE значение = 999".