gpt4 book ai didi

mysql - 如何在 `true` 处有一个列仅用于几个链接行中的一个,其余列在 `false` 处?

转载 作者:行者123 更新时间:2023-12-01 09:06:16 24 4
gpt4 key购买 nike

我环顾四周,发现问题与我的相似但不完全相同,所以很明显他们得到的答案并不适合我:(

为了尝试描绘整个画面,我有一个数据库,其中包括一个“用户”表,每个用户在另一个表“phone_Number”中都有一个或多个电话号码。一个用户有一个主要的电话号码,所以我试图通过在 phone_Number 表中添加一个 bool 列“main_Number”来解决这个问题,但我一直没能找到一种方法来确保一个用户的所有行中只有一个有该列为“真”

[编辑]:更准确地说,“phone_numbers”表记录可以按“user_Id”排序,并且在每个记录组(user_Id 组)中,只有一个 main_number 为“true”。因此,有多少用户就有多少个“main_number”为“true”

有办法吗?

在类似的问题上,我发现一般的答案是使用另一个指向主号码行的表格。但是这样做我显然无法通过一个查询检索用户的所有行(包括第三个表中的列),除非是我的请求错了。

有人能指出我正确的方向吗?

谢谢

最佳答案

您有两个选项可供选择。

Option1: "Main_phone" column in users table

只需将此列添加到表中并编写代码,假设它是主要电话,“phone_Number”表中的数据是其他电话可用的。

优点:易于实现。没那么难维护。删除 phone_Numbers 表中的“main_number”列

缺点:当检索所有电话时,您需要一个连接,这会终止所有索引使用和查询性能。如果你的表太大,那就有问题了

Option 2: Triggers on Not phone_Numbers table

按照您的建议添加“main_number”列。在插入前、更新前、删除前编写一些触发器来控制您的限制。

插入前:

应该控制你的限制

更新前:

应该控制你的限制。如果您删除该用户的“主要电话”行(如有必要),应该控制会发生什么。

删除前:

应该控制如果您删除该用户的“主要电话”行会发生什么(如果需要)。

优点:易于检索,易于维护(一旦开发)

缺点:难以编码。

关于mysql - 如何在 `true` 处有一个列仅用于几个链接行中的一个,其余列在 `false` 处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59826910/

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