2014-01-25 88 views
0

我有一個表booking (id, date, interval)和另一個表booking_data (id, date, data),所以我附上iddate在我booking_data表中的數據,因爲我的訂單是自動生成的,所以當我想插入數據,以避免重複插入我必須使用的一個這些方法:哪個更好:選擇更新,刪除和插入,還是替換?

  1. SELECTINSERT或根據需要
  2. DELETEUPDATE通過iddate,然後INSERT
  3. REPLACE(我不知道這是否有兩把鑰匙或不和,如果必須有兩個我的第二個可能是日期。)

其中哪些將是我的情況是最好的?

回答

1

每種可能性都有不同的折衷,所以沒有明確的單一答案。一些注意事項:

  1. 如果使用SELECT其次INSERTUPDATE,您將需要使用交易START TRANSACTIONCOMMIT或設置autocommit = 0,然後用SELECT ... FOR UPDATE否則,你可能與其他的交易發生衝突。這有一個好處,儘管如果沒有衝突,你可以避免做任何事情。

  2. 使用DELETE後跟INSERT手動執行REPLACE的操作。單個語句中的REPLACE語句和單個事務在循環中嘗試到INSERT,並且每次鍵衝突時,它將刪除違規行。手動執行此操作對於您和數據庫來說都是更多的工作,並且更難以正確實施。

相關問題