好的,我有一個問題,不是一個真正的問題。「更換進」與插入[IF]
我在我的數據庫中有一張表,相當小,只有3列,但有可能增長。我有兩個解決方案來解決我的問題,但不知道爲什麼要使用其中一個。
我有一塊數據,可能已經或可能不在數據庫中。兩種方法來解決這個問題。我擁有唯一的ID,因此很容易檢查。
- 檢查記錄存在於數據庫中,如果沒有,
INSERT INTO
數據庫 - 使用
REPLACE INTO
,因爲我已經得到了ID了。
我現在的問題是。哪一個更好用。使用2個結果中的哪一個有利有弊。還是有更好的結果?
需要注意的是,數據是完全一樣的,所以記錄沒有機會用更新的值更新。因此REPLACE INTO
將插入已經存在的數據。
注意,'REPLACE INTO'在內部實現爲DELETE,然後是INSERT。刪除是一個正常的刪除,這意味着它將檢查外鍵並服從「ON DELETE」子句。你*可能*希望'INSERT INTO ... ON DUPLICATE KEY UPDATE ...'而不管怎樣。 – Charles 2012-02-13 20:13:28
但是,這裏最好的做法是什麼?爲什麼 – 2012-02-13 20:22:58
此外,如果您嘗試更新具有相同(現有)值的行,MySQL將檢測到值相同,並且會跳過更新,從而節省時間,鎖等等 - 使用INSERT的另一個原因INTO ... ON DUPLICATE KEY UPDATE ...「與首先刪除現有行。 – 2012-02-13 20:26:43