我有一张表,有可能存在父子关系。“parentid”有一个外键到它的父级“dataid”,例如:
dataid dataname parentid
---------------------------------
1 example NULL
2 record NULL
3 foo 1
4 bar 1
在这个例子中,人口“foo”和“bar”是“example”的孩子。现在我想在这个表中插入多条数据记录,因为 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() );