我正在使用API从其他服务器获取记录并插入到我的本地数据库中,但是当某个特定字段说apiserverID
重复时,我只想更新字段。
我的问题是我有表结构
现在我希望简单的过程在apiserverID
重复时更新行。
我知道的唯一解决方案是我必须检查(SELECT)密钥apiserverID是否存在然后更新else插入。
但是我不希望在一次查询中进行编程
编辑:主要问题是INSERT ... ON DUPLICATE KEY UPDATE对特定字段不起作用,它包括检查双重性的所有键
答案 0 :(得分:3)
如果表上有一个多列唯一索引,则更新会使用(似乎使用)更新查询中的所有列(唯一索引)。
因此,如果示例中的表上存在UNIQUE(a,b)
约束,则INSERT等效于此UPDATE语句:
UPDATE table SET c=c+1 WHERE a=1 AND b=2;
(而不是“a = 1或b = 2”)
但是在你的情况下,它会按预期工作,因为第一个是你的主键,它永远不会与服务器重复,所以只有你可以重复的是你的apiserverID
所以当发现重复时它会更新其他行总是会执行一个新的插入