前挿入ステップのSQL文のID取得問題について
mysql_insert_id関数を使用すると、Aページがid=1の項目を挿入、Bページがid=の項目を挿入するという誤った操作プロセスが発生します。 2、ページ A が mysql_insert_id を実行します。取得された ID は 1 ですか、それとも 2 ですか?
------解決策のアイデア--------------------- -
ページはもちろん 1
-----ソリューションアイデア----------------------
1 でないと面倒なので、すべてを書くときに同時実行の問題を気にする必要があります。
------ソリューションのアイデア----------------------
mysql サーバーにクエリを送信できます
mysql_query("select LAST_INSERT_ID()");
ログイン後にコピー
ページが 10,000 ある場合はどうなりますか?それが重要なトランザクション操作である場合はどうすればよいでしょうか?データベースへのクエリの方が信頼性が高くなります
-----ソリューションのアイデア----------------------ページmysql_insert_id の戻り値は 1
MySQL の mysql_insert_id は、サーバーの場合、MAX(id) ではなくアトミック操作です。同時実行性が高い場合でも、これは発生しません。状況。
MySQL の
mysql_insert_id は次のように定義されています
my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
{
return mysql->>;last_used_con ->;insert_id;
}
MYSQL パラメータは、データベース リンクと現在のデータベース リンクのいくつかのステータス値を含む構造体です。
には insert_id があります。 mysql_insert_id 関数は、MYSQL 構造体の値を返します。
------解決策のアイデア----------------------それは間違いなく 1 ですが、実際には可能です自分でやればすぐにわかります