2012-04-22 1 views
0

私はPHP/MySQLでe-cart/shopを開発しています。注文を処理する:受信者のアドレスを保存するか、lastInsertId()で参照しますか?

私は重複したデータを格納しないように、アドレスのために別々のテーブルを持つことを最初から決めていました(例えば、同じアドレスに注文が行われるたびに注文はdoorではなくaddress_id、

今、私は注文を処理するためのクエリを作成していますが、私はユーザーのオプションを持っています
a)ストアドリストからアドレスを選択してくださいof customer_id、address_id) - または -
b)新しいアドレスを作成します(クエリはlastInsertId()を返します)。

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

間違ったアドレスが決して与えられないように、そのようなシステムばかなことをするために、私は余分な手順を取ることができますか?

答えて

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

+0

1うわー、私もそのことについて考えたことがなかった - が、その救済は、それがユニークです。私のプロセスは完全に安全だと思いますか? – Ozzy

+0

私は* that *とは言いませんが、未解決の問題は見えません:) –

+0

ハハ大丈夫です。 – Ozzy

関連する問題