2013-07-03 3 views
0

Я пытаюсь использовать `ON DUPLICATE KEY UPDATE ', но он продолжает добавлять новую строку вместо обновления.Вставить, если DNE еще обновить строку Mysql

INSERT INTO favorites (userid, topicid) 
VALUES ('2', '50') 
ON DUPLICATE KEY UPDATE 
active = 0; 

мой стол избранных устанавливаются следующим образом:

favoritesid (AI) 
userid 
topicid 
active (boolean) 

Если идентификатор пользователя и TopicID уже существует (оба из них в той же строке), то я просто хочу, чтобы изменить active 0.

Возможно ли это?

+0

Для того, чтобы нажать «ON DUPLICATE KEY», ключ должен существовать до вашей вставки. Это действительно так? Действительно ли поля являются уникальным ключом (первичный ключ, уникальный индекс)? – Bjoern

+0

Я бы сказал, нет. Есть ли альтернативный способ сделать это в одном запросе, когда это не так? –

+0

Если в нем нет уникальных ключей, это не поможет вам использовать 'ON DUPLICATE KEY'. Либо добавьте уникальный ключ, либо сначала запросите запрос, чтобы узнать, существует ли ваше значение в вашей таблице перед вставкой. – Bjoern

ответ

1

Для того чтобы попасть в ON DUPLICATE KEY, ключ должен существовать до вашей вставки. Если в нем нет уникальных ключей, это не поможет вам использовать его.

Либо добавьте уникальный ключ, либо вы должны сначала запросить, чтобы ваше значение уже было в вашей таблице перед вставкой.

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