mysql - 在重复更新时将许多插入到 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"]
问题是总是再次插入值,我最终在表中得到多个同名值。做这个的最好方式是什么。
解决方案
为了让您的代码工作,name
必须声明为unique
(或作为主键)。在数据库中,您可以通过创建唯一索引或约束来做到这一点:
create unique index unq_integrations_name on integrations(name);
这只需要做一次,通常是在创建表时。
推荐阅读
- linux - Linux 命令将文件内容每行一个字复制到从同一命令创建的新文件中
- javascript - 子进程 setInterval 偶尔不会触发
- java - 递归期间的奇怪错误
- swift - 如何从 .sks 文件加载精灵以显示在我的 ARSKView 中?
- html - 将 SVG 用于向量及其与浏览器的兼容性
- javascript - MVC,passport.js并验证用户是否是authenticad然后重定向?
- optimization - 如何加快python PuLP中的图形着色问题
- javascript - 是否可以(可能使用 javascript)在不加载不同 HTML 页面的情况下更改 HTML 页面内容?
- google-apps-script - 如何将浏览器选项卡更改为 gmail 的当前电子邮件主题
- encryption - 如何仅加密 .env 文件的值?