【问题标题】:Sequlize upsert fails in SQL ServerSQL Server 中的 Sequelize upsert 失败
【发布时间】:2019-03-12 04:20:26
【问题描述】:

在这里,我需要使用带有 node.js 后端的 sequlize 将如下所示的 json 添加到 SQL Server 数据库中。

[
   {
      "id":2,
      "name":"akjnsd",
      "description":"ijhoas",
      "order_num":0,
      "createdAt":"2018-10-02T04:33:13.432Z",
      "updatedAt":"2018-10-02T04:33:13.432Z",
      "columnId":1
   },
   {
      "id":1,
      "name":"Seting up environment",
      "description":"Need to discuss",
      "order_num":1,
      "createdAt":"2018-10-02T03:22:50.212Z",
      "updatedAt":"2018-10-02T03:22:50.212Z",
      "columnId":1
   }
]

    await models.Card.bulkCreate(newColumnCards,
    {
      fields:["order_num", "columnId"] ,
      updateOnDuplicate: ["order_num", "columnId"]
    } );

上面的代码 sn-p 也用于完成我的任务。所以这里 order_num、columnId 正在发生变化,需要更新 SQL Server 数据库中的所有这些更新值,并且如果特定 id 不在 Card 表中(A bulk upsert),则需要插入。

但我收到以下错误消息,即不支持批量更新。那么是否可以解决或者有其他解决方案吗?

错误:mssql 不支持“updateOnDuplicate”选项。

注意:我使用的是 SQL Server 2017。我通过 stackoverflow 解决了这类问题。但找不到具体的答案。

如果不支持,有没有办法在sql server上实现批量更新?

【问题讨论】:

    标签: node.js sql-server sequelize.js


    【解决方案1】:

    SQL Server 不支持 ON DUPLICATE KEY 功能,因此无法使用此 Sequelize 选项 - 它仅适用于 MySQL。

    https://github.com/sequelize/sequelize/issues/8766#issuecomment-350425464

    http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-bulkCreate

    【讨论】:

    • 有没有办法实现至少批量更新功能?
    • @rohit_wason 最初的问题是询问它是否受支持,然后显然后来对其进行了编辑以寻求替代实现。所以基本上,是的,我只是重复了错误所说的内容,因为问题所在的 SQL Server 不支持它。
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2019-07-19
    • 2015-05-09
    • 1970-01-01
    • 2017-05-25
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多