如何使用LAST_INSERT_ID()插入具有相同值的多个记录

时间:2019-08-01 01:36:01

标签: javascript mysql sql node.js many-to-many

因此,关于具有多个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()。不必对数据库进行两个异步调用,是否可以实现?

谢谢

0 个答案:

没有答案