首页 > 解决方案 > 在重复更新时将许多插入到 sql 表中

问题描述

我是 mysql 新手,我正在尝试在表中插入很多,如果有重复的名称,请忽略它并继续。我目前在 nodejs 工作。这是我的代码示例

 let sql = `INSERT INTO integrations
            (name)
           VALUES ? 
           ON DUPLICATE KEY UPDATE 
           name=VALUES(name)`;
this.connection.query(sql, [this.createValues()], function (err :any, result: any) {
  if (err) throw err;
  console.log('modified ' + result.affectedRows + "records(s)");
});

createValues() 返回一个数组,如

["bob", "mike", "anna", "theo", "karen"]

问题是总是再次插入值,我最终在表中得到多个同名值。做这个的最好方式是什么。

标签: mysqlsqlnode.js

解决方案


为了让您的代码工作,name必须声明为unique(或作为主键)。在数据库中,您可以通过创建唯一索引或约束来做到这一点:

create unique index unq_integrations_name on integrations(name);

这只需要做一次,通常是在创建表时。


推荐阅读