【问题标题】:Does sequelize have an equivalent of mysqls replace function?sequelize 是否具有等效于 mysqls 的替换功能?
【发布时间】:2020-07-21 09:43:53
【问题描述】:

这个问题是不言自明的。

替换:工作方式与 INSERT 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行

所以我想运行的查询是

REPLACE INTO questions SET question = 'myquestions', category = 'mycategory', isNew = '0';

我的桌子如下

CREATE TABLE questions (
id int(11) NOT NULL AUTO_INCREMENT,
question varchar(254) NOT NULL,
category varchar(254) NOT NULL,
isNew tinyint(1) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (category, isNew)
);

所以目标是如果已经存在具有相同类别的行并且 isNew 在创建新行之前将其删除。

【问题讨论】:

    标签: mysql node.js orm sequelize.js sequelize-cli


    【解决方案1】:

    有UPSERt功能

    See documentation

    插入或更新单行。如果找到与主键或唯一键上提供的值匹配的行,则将执行更新。请注意,唯一索引必须在您的 sequelize 模型中定义,而不仅仅是在表中。否则,您可能会遇到唯一约束违规,因为 sequelize 无法识别应更新的行。

      Model.upsert({uniqueKey: 1234, name: 'DarthVader'}).then(function () {
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2012-07-18
      • 1970-01-01
      • 2010-11-28
      • 2011-02-13
      相关资源
      最近更新 更多