插入多行,parent = lastInsertId

Posted

技术标签:

【中文标题】插入多行,parent = lastInsertId【英文标题】:Insert multiple rows, parent = lastInsertId 【发布时间】:2013-11-10 21:45:29 【问题描述】:

有没有办法(在单个查询中)插入多行,并让一些行知道之前插入的行的 id?

insert into my_table(contents, css) values ('some text', 'color: blue');  // grab id from that
insert into my_table(contents, css, parent_id) values ('child text', 'color: pink', last_insert_id);
// etc

将它们分成单独的查询是一个性能问题,我想避免使用proc,那么有没有办法只在mysql中做到这一点?

【问题讨论】:

也许这会有所帮助***.com/questions/9046971/… 【参考方案1】:

试试这个:

insert into my_table(contents, css) values ('some text', 'color: blue');  // grab id from that

SELECT LAST_INSERT_ID();

insert into my_table(contents, css, parent_id) values ('child text', 'color: pink', last_insert_id);

SELECT LAST_INSERT_ID();

【讨论】:

这是未经测试的,但我看到我没有接受答案,我不久前停止了这个项目【参考方案2】:

您可以获取最后插入的 id,但不能以您想要的方式在单个查询中插入多行,因为无论如何都需要查询。

如果不会有很多并发访问,你可以锁定表,根据当前最大id预计算id,插入所有内容并解锁。

【讨论】:

以上是关于插入多行,parent = lastInsertId的主要内容,如果未能解决你的问题,请参考以下文章

PDO LastInsertId 不返回任何内容

Oracle中的多行插入查询(从一张表中选择多行并插入到另一张表中[重复]

MS Access 插入多行

插入多行时重复会发生啥?

Laravel插入或更新数组,多行

mysqli多行插入,简单多插入查询