gpt4 book ai didi

mysql - 一对多关系中仅具有主标志的一条记录的唯一索引

转载 作者:行者123 更新时间:2023-11-29 12:01:58 27 4
gpt4 key购买 nike

我的表人和电子邮件处于一对多关系。

PERSON 
|id|name|
| 1|Matt|

EMAIL
|id|person_id| email|is_primary|
| 1| 1|a@a.com| true|
| 2| 1|b@a.com| true|
| 3| 1|c@a.com| false|

一个人只能将一封电子邮件指定为主要电子邮件。我怎样才能使用唯一索引或其他东西来防止这种情况?

我尝试过解决这个问题。看来我这里需要的是类似WHERE语句的东西,如果它只能添加到索引中的话。

CREATE UNIQUE INDEX email_one_is_primary ON email(person_id,is_primary);

最佳答案

方法:

  1. 创建一个虚拟列,如果为主,则将 dummy_col 的值插入为 1,否则 email_id;

    更改表电子邮件添加约束 email_one_is_primary UNIQUE (person_id,dummy_col)

EMAIL
|id|person_id| email|is_primary|dummy_col |
| 1| 1|a@a.com| true|1 |
| 2| 1|b@a.com| true|1 |
| 3| 1|c@a.com| false|c@a.com |
  • 将 is_primary 设置为 varchar,将 true 存储为 1,将 email_id 设置为 false

    更改表电子邮件添加约束 email_one_is_primary UNIQUE (person_id,is_primary)

  • EMAIL
    |id|person_id| email|is_primary|
    | 1| 1|a@a.com| 1 |
    | 2| 1|b@a.com| 1 |
    | 3| 1|c@a.com| c@a.com|

    关于mysql - 一对多关系中仅具有主标志的一条记录的唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32221954/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com