在MySQL w/Node.js中,引用另一个字段值来影响新的字段值


感谢阅读。我有一个有3个字段的表,一个是ID,它会自动递增,我无法从Node.js服务器访问它,因为它是由MySql添加的。另一个字段包含一个字符串,最后一个字段应该是字符串字段的前3个字母加在id上的总和。问题是,当我进行查询时,我不能直接将它们相加,因为在将查询发送到DB之前,id并不存在。我该怎么办?处理API中的ID自动增量会非常不方便。谢谢你抽出时间!

插入行后,可以获取其ID并更新第三列。

connection.query('INSERT INTO yourTable (name) VALUES (?)', [name], function(err, result) {
if (err) {
throw err;
}
let code = name.substr(0, 3) + result.insertId;
connection.query('UPDATE yourTable SET code = ? WHERE id = ?', [code, result.insertId], function(err) {
if (err) {
throw err;
}
});
});

但是,如果批量插入多行,这将不起作用,因为result.insertId只是插入的最后一行。

您可以更新代码所在的所有行

connection.query('INSERT INTO yourTable (name) VALUES ?', names.map(n => [n]), function(err, result) {
if (err) {
throw err;
}
connection.query('UPDATE yourTable SET code = CONCAT(SUBSTR(name, 1, 3), id) WHERE code IS NULL', function(err) {
if (err) {
throw err;
}
});
});

相关内容

  • 没有找到相关文章