2011-03-12 41 views
0

我有獨特的字段uniq_field表。添加哪種方法比較好 - 首先檢查是否存在具有唯一值的記錄,或者只需添加記錄,mysql會自行檢查?mysql獨特字段

+2

這取決於你要採取的行動,如果重複 – 2011-03-12 06:54:15

+0

如果DUPLICATE然後沒有添加 – kusanagi 2011-03-12 06:58:12

回答

2

這取決於你要去採取重複
可能的解決方案的情況下,可以在這樣的僞代碼顯示

switch action 
    case "do nothing": 
     INSERT IGNORE 
    case "delete existing then add new one": 
     REPLACE INTO 
    case "update existing": 
     ON DUPLICATE UPDATE 
    default: 
     select first and then apply necessary logic 
1

這取決於你想如何在你的代碼中處理它。

如果您只是想確保該元素存在,您可以執行所謂的插入 - 重複鍵更新 - 這意味着如果該行已經存在,則該行被替換 - 但是如果它不存在,則會被更新。

更多關於該主題的位置:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

1

那麼該表的作用

+--------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+--------+---------+------+-----+---------+-------+ 
| id  | int(11) | NO | PRI | 0  |  | 
| unique | int(11) | NO | UNI | NULL |  | 
+--------+---------+------+-----+---------+-------+ 

此代碼返回false

$result = mysql_query("insert into tab1 values(1, 1), (2, 1)"); 

echo ($result)?($result):"false"; 

儘管此代碼返回1

$result = mysql_query("insert into tab1 values(1, 1), (2, 2)"); 

echo ($result)?($result):"false"; 

看來,如果你想顯示的消息,那麼你應該在你的數據庫檢查值並顯示錯誤。如果你不想顯示實際造成的錯誤和錯誤,那麼你可以直接查詢。