1

我有一张表,有可能存在父子关系。“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() );
4

0 回答 0