首页 文章

INSERT ... ON DUPLICATE KEY UPDATE

提问于
浏览
1

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

  • myPrimaryKey

  • apiserverID

  • ....

  • .....

  • .....

  • updateDate

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

EDIT :主要问题是INSERT ... ON DUPLICATE KEY UPDATE不适用于特定字段,它包括检查口是不完整的所有密钥

1 回答

  • 3

    如果表上有单个 multiple-column 唯一索引,则更新将使用(似乎使用)更新查询中的所有列(唯一索引) .

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

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

    (and not "a=1 OR b=2")

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

相关问题