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) に感謝します。

まだ2つのクエリを次々に実行していますが、これで解決できると思います。

/*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