AUTO_INCREMENT
属性を持つカラムが定義されているテーブルにレコードを挿入する場合、mysql_insert_id()
を呼び出すことによって、最後に生成された
ID を取得できます。
また、mysql_query()
に渡すクエリ文字列で
LAST_INSERT_ID()
関数を使用することによって、最後に生成された
ID を取得することもできます。
以下のコードを実行すると、AUTO_INCREMENT
インデックスが使用されたかどうかを調べることができます。このコードは同時に、クエリが
AUTO_INCREMENT
インデックスを使用する INSERT
だったかどうかも調べます。
if (mysql_error(&mysql)[0] == 0 && mysql_num_fields(result) == 0 && mysql_insert_id(&mysql) != 0) { used_id = mysql_insert_id(&mysql); }
最後に生成された ID
は、接続ごとにサーバに保持されます。他の接続を使用するクライアントによって変更されることはありません。AUTO_INCREMENT
属性を持つ他のカラムを非マジック値(NULL
でも 0
でもない値)で更新した場合も、この ID
は変更されません。
あるテーブル用に生成された ID を別のテーブルに挿入するには、以下の SQL ステートメントを記述します。
INSERT INTO foo (auto,text) VALUES(NULL,'text'); # generate ID by inserting NULL INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text'); # use ID in second table
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.