如果不存在如何插入,如果存在如何更新(upsert)?

0sgqnhkj  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(414)

这个问题在这里已经有答案了

“insert ignore”与“insert…on duplicate key update”(12个答案)
两年前关门了。
我现在有一个困惑:

var post = {ip: host, status: info};
var sql = con.query('INSERT OR IGNORE INTO ipaddress SET ?', post, 
function(err, result){});

我已经将ip地址设置为主键。

yv5phkfx

yv5phkfx1#

续集

既然您使用的是node.js,那么使用sequelize怎么样?
sequelize是node.jsv4及更高版本的基于承诺的orm。它支持postgresql、mysql、sqlite和mssql语言,并具有可靠的事务支持、关系、读取复制等功能。
如果你对sql不太了解也没关系,因为你可以使用它的内置函数。例如,如果要执行 upsert :

ipaddress.upsert({
    ip: host,
    status: info,
});

纯mysql

如果您仍然想使用mysql,请使用 ON DUPLICATE KEY UPDATE 向上插入。

var sql = `INSERT INTO post (ip, status) VALUES (${host}, ${info}) ON DUPLICATE KEY UPDATE ip=${host}, status=${info}`;

但是您需要注意一些潜在的问题,比如sql注入。

相关问题