0

私はPHP/MySQLでe-cart/shopを開発しています。

重複データを保存しないように、最初から住所用に別のテーブルを用意することにしました(たとえば、同じ住所に注文が行われるたびに、注文では、door、street、town、 city、post_codeなど。

ここで、注文を処理するためのクエリを作成しています。ユーザーが
a)(customer_id、address_idの)保存されたリストから住所を選択するか、または
b)新しい住所を作成する(クエリはlastInsertId()を返します)。

lastInsertId()が間違って返さaddress_idれ、システムが注文を間違って保存されたアドレスに送信する状況があるかどうかわからないため、疑問がありますか?または、注文が処理されるときに間違ったID番号が渡されますか?

間違ったアドレスが与えられないように、そのようなシステムを絶対確実にするために、どのような追加の手順を実行できますか?

4

1 に答える 1

1

LAST_INSERT_ID()の場合、最後に生成されたIDは、接続ごとにサーバーに保持されます。他のクライアントによって変更されることはありません。別のAUTO_INCREMENT列を非マジック値(つまり、NULLでも0でもない値)で更新しても、変更されません。複数のクライアントからLAST_INSERT_ID()列とAUTO_INCREMENT列を同時に使用することは完全に有効です。各クライアントは、クライアントが最後に実行したステートメントに対して最後に挿入されたIDを受け取ります。

詳細:http ://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

于 2012-04-22T18:23:50.873 に答える