javascript - 如何使用 LAST_INSERT_ID() 插入具有相同值的多条记录
问题描述
LAST_INSERT_ID()
因此,关于多条记录的大多数问题INSERT
都涉及在插入后取回多个 ID,我的问题是倒退的。
我有 table foo
,与 有多对多关系bar
,还有一个联结表foo__bar
。我想要INSERT
一条foo
记录,但也有未知数量的bar
关联,所以我需要LAST_INSERT_ID()
在第一INSERT
条语句之后,但要多次:
const db = require('mysql');
...
//connection and pooling set up
let sql = `INSERT INTO foo VALUES(null, ?, ?);
INSERT INTO foo__bar((LAST_INSERT_ID(), ?), (LAST_INSERT_ID(), ?)//etc
`;
let barIds = [1,4];
let params = [name, description, barIds[0], barIds[1]];
let result = await db.query(sql, params);
bar
如果表已经填充并且id 是有效的,这很好用bar
,而且我只做两个关联INSERT
:
--table foo__bar
+------+------+
|foo_id|bar_id|
|------|------|
| 1| 1|
|------|------|
| 1| 4|
+------+------+
但是如果我有多个值/关联怎么办?使用 'mysql' npm 包,通常我可以这样做,然后将数组转换为((val1, val2),(val1, val2),(val1,val1))
etc。但是,对于我的联结表,我val1
每次都需要相同,特别是LAST_INSERT_ID()
. 这是否可能无需对数据库进行两次异步调用?
谢谢
解决方案
推荐阅读
- react-native - 移动应用的技术选择
- python - 列表理解中函数调用的多次返回
- python - Discord py message.createdat
- php - 如何解决php文件上传返回未知错误
- javascript - JavaScript href/路由问题
- excel - Excel 如何使此宏适用于所有工作簿?
- mongodb - 如何查询MongoDB的字段值是否以字符串形式出现在另一个字段值中?
- c# - 带有 int 数组参数的 Net Core API HttpPost
- python - Matplotlib:为什么插值点落在绘制线之外?
- java - 如何使用 BiConsumer 接受具有对象、字符串列表和变量的对象?