首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql唯一字段

问mysql唯一字段
EN

Stack Overflow用户
提问于 2011-03-12 14:52:37
回答 3查看 794关注 0票数 0

我有一个具有唯一字段uniq_field的表。哪种添加方式更好--先检查是否有唯一值的记录,还是直接添加记录,mysql自己检查?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-12 14:57:35

这取决于您在发生重复情况时将采取的操作

可以在这样的伪代码中显示可能的解决方案

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2011-03-12 14:56:47

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2011-03-12 15:11:57

在这张桌子上

代码语言:javascript
复制
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id     | int(11) | NO   | PRI | 0       |       |
| unique | int(11) | NO   | UNI | NULL    |       |
+--------+---------+------+-----+---------+-------+

此代码返回false

代码语言:javascript
复制
$result = mysql_query("insert into tab1 values(1, 1), (2, 1)");

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

虽然此代码返回1

代码语言:javascript
复制
$result = mysql_query("insert into tab1 values(1, 1), (2, 2)");

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

看起来,如果你想显示消息,那么你应该检查数据库中的值并显示一个错误。如果你不想显示真正的原因和错误,你可以直接查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5281098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档