MySQL 5.1 リファレンスマニュアル :: 23 APIとライブラリー :: 23.2 MySQL C API :: 23.2.3 C API機能の説明 :: 23.2.3.37 mysql_insert_id()
« 23.2.3.36 mysql_init()

23.2.3.38 mysql_kill() »
Section Navigation      [Toggle]
  • 23.2.3 C API機能の説明
  • 23.2.3.1 mysql_affected_rows()
  • 23.2.3.2 mysql_autocommit()
  • 23.2.3.3 mysql_change_user()
  • 23.2.3.4 mysql_character_set_name()
  • 23.2.3.5 mysql_close()
  • 23.2.3.6 mysql_commit()
  • 23.2.3.7 mysql_connect()
  • 23.2.3.8 mysql_create_db()
  • 23.2.3.9 mysql_data_seek()
  • 23.2.3.10 mysql_debug()
  • 23.2.3.11 mysql_drop_db()
  • 23.2.3.12 mysql_dump_debug_info()
  • 23.2.3.13 mysql_eof()
  • 23.2.3.14 mysql_errno()
  • 23.2.3.15 mysql_error()
  • 23.2.3.16 mysql_escape_string()
  • 23.2.3.17 mysql_fetch_field()
  • 23.2.3.18 mysql_fetch_field_direct()
  • 23.2.3.19 mysql_fetch_fields()
  • 23.2.3.20 mysql_fetch_lengths()
  • 23.2.3.21 mysql_fetch_row()
  • 23.2.3.22 mysql_field_count()
  • 23.2.3.23 mysql_field_seek()
  • 23.2.3.24 mysql_field_tell()
  • 23.2.3.25 mysql_free_result()
  • 23.2.3.26 mysql_get_character_set_info()
  • 23.2.3.27 mysql_get_client_info()
  • 23.2.3.28 mysql_get_client_version()
  • 23.2.3.29 mysql_get_host_info()
  • 23.2.3.30 mysql_get_proto_info()
  • 23.2.3.31 mysql_get_server_info()
  • 23.2.3.32 mysql_get_server_version()
  • 23.2.3.33 mysql_get_ssl_cipher()
  • 23.2.3.34 mysql_hex_string()
  • 23.2.3.35 mysql_info()
  • 23.2.3.36 mysql_init()
  • 23.2.3.37 mysql_insert_id()
  • 23.2.3.38 mysql_kill()
  • 23.2.3.39 mysql_library_end()
  • 23.2.3.40 mysql_library_init()
  • 23.2.3.41 mysql_list_dbs()
  • 23.2.3.42 mysql_list_fields()
  • 23.2.3.43 mysql_list_processes()
  • 23.2.3.44 mysql_list_tables()
  • 23.2.3.45 mysql_more_results()
  • 23.2.3.46 mysql_next_result()
  • 23.2.3.47 mysql_num_fields()
  • 23.2.3.48 mysql_num_rows()
  • 23.2.3.49 mysql_options()
  • 23.2.3.50 mysql_ping()
  • 23.2.3.51 mysql_query()
  • 23.2.3.52 mysql_real_connect()
  • 23.2.3.53 mysql_real_escape_string()
  • 23.2.3.54 mysql_real_query()
  • 23.2.3.55 mysql_refresh()
  • 23.2.3.56 mysql_reload()
  • 23.2.3.57 mysql_rollback()
  • 23.2.3.58 mysql_row_seek()
  • 23.2.3.59 mysql_row_tell()
  • 23.2.3.60 mysql_select_db()
  • 23.2.3.61 mysql_set_character_set()
  • 23.2.3.62 mysql_set_local_infile_default()
  • 23.2.3.63 mysql_set_local_infile_handler()
  • 23.2.3.64 mysql_set_server_option()
  • 23.2.3.65 mysql_shutdown()
  • 23.2.3.66 mysql_sqlstate()
  • 23.2.3.67 mysql_ssl_set()
  • 23.2.3.68 mysql_stat()
  • 23.2.3.69 mysql_store_result()
  • 23.2.3.70 mysql_thread_id()
  • 23.2.3.71 mysql_use_result()
  • 23.2.3.72 mysql_warning_count()

23.2.3.37. mysql_insert_id()

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()の戻り値を以下のシーケンスに単純化することができます:

  1. 自動インクレメントカラムが存在し、自動生成された値がうまく挿入された場合、当該値の最初のものが戻されます。

  2. ステートメント中にLAST_INSERT_ID(EXPR)が含まれていた場合、影響されたテーブル中にオートインクレメント・カラムが含まれていたとしても、EXPRが戻されます。

  3. 戻り値は使用したステートメントによって変わります。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カラムに何が起こったかに関する少し正確な情報を提供しようとすることに起因して生まれます。

戻り値

戻り値。

エラー

なし。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates