по обновлению дубликата ключа - PullRequest
1 голос
/ 18 декабря 2010

Я пытался использовать следующее, но у меня появляется сообщение об ошибке «ГДЕ».Это возможно или мне нужно использовать что-то еще?

Если поставщика не существует, вставьте новую строку.Если поставщик существует, обновите строку, в которой item_id равен чему-либо.

INSERT INTO vendor_item VALUES(1,1)
ON duplicate KEY UPDATE vendor_id=1
WHERE item_id=3

Ответы [ 2 ]

2 голосов
/ 18 декабря 2010

В операторе INSERT нет предложения WHERE. Вы можете обновить только строку, которая является дубликатом того, что вы хотели вставить, поэтому нет смысла иметь условие.

Если вам нужны более сложные действия, в MySQL доступны триггеры Но, возможно, было бы лучше не делать это полностью в MySQL.

0 голосов
/ 18 декабря 2010

Способ ON DUPLICATE KEY UPDATE работает следующим образом.Скажем, у вас есть таблица ("tableA") с 3 полями в ней (fieldA, fieldB, fieldC), и давайте представим, что fieldA установлено как уникальное.Давайте также представим, что в этой таблице уже есть 1 строка данных: fieldA fieldB fieldC 1 'foo' 'test'

Учитывая следующий запрос:

INSERT into tableA (fieldA,fieldB,fieldC) VALUES (1,'bar','example') ON DUPLICATE KEY UPDATE fieldB=VALUES(fieldB),fieldC=VALUES(fieldC)

MySQL будет предполагать, что fieldAявляется уникальным, и новые записи станут такими: fieldA fieldB fieldC 1 'bar' 'example'

Как и все остальное, я бы рекомендовал прочитать его перед использованием в производстве:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...