在重复密钥更新帮助

时间:2010-12-18 12:26:49

标签: mysql insert

我试过使用以下内容但是在'WHERE'附近出现错误。这是可能的还是我需要使用别的东西?

如果供应商不存在,请插入新行。如果供应商确实存在,那么更新item_id等于某事的行。

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

2 个答案:

答案 0 :(得分:2)

INSERT statement没有WHERE子句。您只能更新与要插入的内容重复的行,因此条件没有意义。

如果您想要更复杂的操作,MySQL可以triggers。但也许最好不要在MySQL中完全做到这一点。

答案 1 :(得分:0)

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'酒吧''示例'

与其他任何事情一样,我建议在生产中使用它之前阅读它:

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