mysql 唯一字段

发布于 2024-10-21 13:51:25 字数 79 浏览 3 评论 0原文

我有一个带有唯一字段 uniq_field 的表。添加什么方法更好-首先检查具有唯一值的记录是否存在,或者简单地添加记录,mysql会自己检查?

i have table with unique field uniq_field. what method adding is better- first check if record with unique value exists or simply add record and mysql will check by himself?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我家小可爱 2024-10-28 13:51:25

这取决于您在重复情况下要采取的操作
可能的解决方案可以用这样的伪代码显示

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

it depends on the action you gonna take in case of duplicate
possible solutions can be shown in such a pseudo code

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
羁拥 2024-10-28 13:51:25

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

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

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

it depends on how you want to handle it in your code.

If you just want to make sure that element exists, you can do what's called a insert - on duplicate key update - that means that the row gets replaced if it's already present - but if it's not, it gets updated.

More on that topic here: http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

不及他 2024-10-28 13:51:25

对于这个表来说

+--------+---------+------+-----+---------+-------+
| 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";

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

Well for this table

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

This code returns false

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

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

While this code returns 1

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

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

It seems that if you want to display message, then you should check for values in you database and display an error. If you don't want to display what actually caused and error then you can directly query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文