my_ulonglong mysql_insert_id(MYSQL *mysql)
説明
それは、AUTO_INCREMENT
カラムのために、以前のINSERT
ステートメントによって生成された値を戻します。INSERT
ステートメントを、AUTO_INCREMENT
フィールドを含むテーブルの中で実行した後、この機能を使ってください。
mysql_insert_id()
の戻り値は、以下の条件が明確に更新されない限り、常にゼロです。
AUTO_INCREMENT
カラムの中に値を記憶するINSERT
ステートメント。値が、NULL
または0
をカラムに収納することによって、自動的に生み出されるか、あるいは明示的な非スペシャル値であるか否かにかかわらず、これは真実です。
マルチ列INSERT
ステートメントの場合、mysql_insert_id()
の戻り値は、MySQLのバージョンによって異なります。
バージョンナンバー5.1.12以降では、初めに
自動的にかつ
首尾よく生成された
AUTO_INCREMENT
値を返します。MySQLバージョンが5.1.12以前のMySQLでは、mysql_insert_id()
は、値の挿入が成功したか否かにかかわりなく、最初に自動生成されたAUTO_INCREMENT
値を戻します。
列がうまく挿入されなかった時、mysql_insert_id()
はゼロを戻します。
MySQL 5.1.12を立ち上げて、INSERT ...
SELECT
ステートメントを実行したが、自動生成された値がうまく挿入されない場合、mysql_insert_id()
は最後に挿入した列のidを戻します。
MySQL 5.1.12を立ち上げて、INSERT ...
SELECT
ステートメントがLAST_INSERT_ID(
を使う場合、expr
)mysql_insert_id()
はexpr
を戻します。
LAST_INSERT_ID(
)expr
)をカラムに挿入することによって、AUTO_INCREMENT
ステートメント。
値を生成する
INSERT
LAST_INSERT_ID(
expr)を更新することによって、
AUTO_INCREMENT値を生成する
INSERT
ステートメント。
mysql_insert_id()
の値は、結果セットを戻すSELECT
のようなステートメントによって影響を受けません。
以前のステートメントがエラーを戻した場合、mysql_insert_id()
の値は規定されません。
5.1.12以降のバージョンでは、mysql_insert_id()
の戻り値を以下のシーケンスに単純化することができます:
自動インクレメントカラムが存在し、自動生成された値がうまく挿入された場合、当該値の最初のものが戻されます。
ステートメント中にLAST_INSERT_ID(
が含まれていた場合、影響されたテーブル中にオートインクレメント・カラムが含まれていたとしても、EXPR
)EXPR
が戻されます。
戻り値は使用したステートメントによって変わります。INSERT
INTO
ステートメントの後に呼び出されたとき:
テーブル中にオートインクレメント・カラムが存在していて、テーブル中にうまく挿入されたこのカラムーに対して、明確な幾つかの値があった場合、当該明確な値の最後が戻されます。
INSERT ...ON DUPLICATE
KEY
ステートメントの後に呼び出されるとき:
オートインクレメント・カラムとテーブルが存在していて更に、うまく挿入された幾つかの明確な値もしくは幾つかの更新された列があった場合、挿入されたか更新された値の最後が戻されます。
前のステートメントがAUTO_INCREMENT
値を使用していない場合、mysql_insert_id()
は0
値を戻します。後で使用するため、値をセーブする必要がある場合、mysql_insert_id()
を、値を生成するステートメントの直後に確実に呼び出してください。
mysql_insert_id()
の値は、現在のクライアント接続の中に発行されたステートメントのみによって影響を受けます。それは、他のクライアントによって発行されたステートメントによって影響を受けません。
詳しくは 項11.10.3. 「情報関数」 を参照してください。
SQLLAST_INSERT_ID()
機能の値には、(5.1.12の立ち上げ後)最初に自動生成された値で、うまく挿入された値、または(5.1.12より前に)列がうまく挿入された場合、最初に自動生成された値が含まれてることにもご注目ください。他の違いは、AUTO_INCREMENT
カラムを特別でない値にセットした場合、LAST_INSERT_ID()
は更新されないことです。
LAST_INSERT_ID()
とmysql_insert_id()
の違いは、LAST_INSERT_ID()
はスクリプト中で容易にされるが、mysql_insert_id()
はAUTO_INCREMENT
カラムに何が起こったかに関する少し正確な情報を提供しようとすることに起因して生まれます。
戻り値
戻り値。
エラー
なし。