2012-04-22 85 views
0

我正在開發一個使用PHP/MySQL的電子購物車/商店。處理訂單:保存收件人地址,或通過lastInsertId()引用?

我從一開始就決定爲地址設置一個單獨的表格,這樣我就不會存儲重複的數據(例如,每次對同一地址發出一個命令時,該命令將存儲address_id而不是門,街道,城鎮,城市,post_code等

現在我正在查詢處理訂單,我將有一個選項爲
a)從存儲列表中選擇一個地址( customer_id,address_id) - 或者 -
b)創建一個新地址(查詢返回lastInsertId())。

我有疑問,因爲我不確定是否有任何情況,lastInsertId()會返回錯誤的address_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 2012-04-22 18:26:35

+0

我不會說*那*,但我沒有看到任何懸而未決的問題:) – 2012-04-22 18:29:30

+0

哈哈好吧,那麼這就是我需要知道的一切,謝謝:) – Ozzy 2012-04-22 18:31:15

相關問題