首页 > 解决方案 > 如何使用 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(). 这是否可能无需对数据库进行两次异步调用?

谢谢

标签: javascriptmysqlsqlnode.jsmany-to-many

解决方案


推荐阅读