mysql的唯一字段

时间:2011-03-12 06:52:37

标签: php mysql unique

我有唯一字段uniq_field的表。什么方法添加更好 - 首先检查是否存在具有唯一值的记录,或者只是添加记录和mysql将自行检查?

3 个答案:

答案 0 :(得分: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 :(得分:1)

这取决于您希望如何在代码中处理它。

如果您只是想确保该元素存在,您可以执行所谓的插入 - 重复键更新 - 这意味着如果该行已经存在则会被替换 - 但如果不存在,则会更新。

有关该主题的更多信息,请访问:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

答案 2 :(得分: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";

似乎如果要显示消息,则应检查数据库中的值并显示错误。如果您不想显示实际导致的错误,那么您可以直接查询。