ホームページ  >  記事  >  バックエンド開発  >  前挿入ステップのSQL文のID取得問題について

前挿入ステップのSQL文のID取得問題について

WBOY
WBOYオリジナル
2016-06-23 13:46:041166ブラウズ

mysql_insert_id 関数を使用する場合、間違った操作プロセス: ページ A は id=1 の項目を挿入し、ページ B は id=2 の項目を挿入します。ページ A で mysql_insert_id を実行して取得される ID は 1 ですか 2 ですか?

ディスカッションへの返信(解決策)

ページ A は当然 1

ページ A は当然 1

現在のページの前のステップで実行された挿入文の ID を返す、という理解でよろしいでしょうか? W3school はあまりうまく言いません

1 でなければ、すべてを書くときに同時実行の問題を気にする必要があります。
mysql サーバーにクエリを送信できます
mysql_query("select  LAST_INSERT_ID()");
ページが 10,000 ある場合はどうなるでしょうか?それが重要なトランザクション操作である場合はどうすればよいでしょうか?データベースへのクエリはより信頼性が高くなります

ページ A の mysql_insert_id は 1 を返します

MySQL の mysql_insert_id は、サーバーにとって、大規模な同時実行状況でも MAX(id) ではなくアトミック操作です。不正確さはありません。


MySQL を見ることができます

mysql_insert_id は次のように定義されています

my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
{
return mysql->gt;;last_used_con->;insert_id;
}

MYSQL パラメータは構造体ですこれには、データベース リンクと現在のデータベース リンクのいくつかのステータス値が含まれます。

MYSQL 構造体に insert_id があり、mysql_insert_id 関数はその構造体の値を返します。

間違いなく1、実際に操作できれば分かります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。