插入多行,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的主要内容,如果未能解决你的问题,请参考以下文章