因此,关于具有多个LAST_INSERT_ID()
记录的INSERT
的大多数问题都涉及在插入后取回多个ID,我的问题是倒退的。
我有一个表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
表已经被填充并且bar
的ID有效,并且我只对每个INSERT
做两个关联,这将很好地工作:
--table foo__bar
+------+------+
|foo_id|bar_id|
|------|------|
| 1| 1|
|------|------|
| 1| 4|
+------+------+
但是,如果我有多个值/关联怎么办?使用'mysql'npm软件包,通常我可以做this并将一个数组转换为((val1, val2),(val1, val2),(val1,val1))
等。但是,对于我的联结表,我需要val1
保持一致每次,特别是LAST_INSERT_ID()
。不必对数据库进行两个异步调用,是否可以实现?
谢谢