1

我正在使用 API 从不同的服务器获取记录并插入到我的本地数据库中,但是当特定字段说apiserverID重复时,我只想更新字段。我的问题是我的表结构为

  • 我的主键
  • apiserverID
  • ……
  • ......
  • ......
  • 更新日期

现在我想要简单的程序来更新行,如果apiserverID是重复的。我知道的唯一解决方案是我必须检查(SELECT)密钥 apiserverID 是否存在,然后更新其他插入。但我不想为此进行编程,这在一个查询中是否可行

编辑:主要问题是 INSERT ... ON DUPLICATE KEY UPDATE 不适用于特定字段,它包括检查重复性的所有键

4

1 回答 1

3

如果有一个多列唯一索引,则更新使用(似乎使用)更新查询中的(唯一索引的)所有列。

因此,如果UNIQUE(a,b)示例中的表存在约束,则 INSERT 等效于以下 UPDATE 语句:

UPDATE table SET c=c+1 WHERE a=1 AND b=2;

(而不是“a=1 OR b=2”)

但在你的情况下,它会按预期工作,因为第一个是你的主键,它永远不会与服务器重复,所以只有可以重复的东西是你的apiserverID,所以当发现重复时,它会更新行,否则总是一个新的插入被执行

于 2012-09-11T09:16:31.903 回答