我有一张桌子,可能有父子关系。 " parentId的"有一个外键给它的父母" dataid"例如:
dataid dataname parentid
---------------------------------
1 example NULL
2 record NULL
3 foo 1
4 bar 1
在这个例子中,人口" foo"和" bar"是"例子"的孩子。 现在我想在这个表中插入多个数据记录,因为dataid是自动递增的,我想知道我是否可以在插入后获得此id而不执行额外的查询。例如:
INSERT INTO table (dataname, parentid) VALUES
( cat, NULL ), ( tiger, **dataid from cat** ), ( lion, **dataid from cat** );
要获得此结果:
dataid dataname parentid
---------------------------------
5 cat NULL
6 tiger 5
7 lion 5
答案 - 感谢PLB(和Simon Cambier):
仍然在彼此之后执行两个查询,但我认为这是解决方案。
/*first insert parent*/
INSERT INTO table (dataname, parentid) VALUES
( cat, NULL );
/*insert children*/
INSERT INTO table (dataname, parentid) VALUES
( tiger, LAST_INSERT_ID() ), ( lion, LAST_INSERT_ID() );