2011-03-12 56 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"; 

看来,如果你想显示的消息,那么你应该在你的数据库检查值并显示错误。如果你不想显示实际造成的错误和错误,那么你可以直接查询。