gpt4 book ai didi

sql - 如何使表b的列仅对表a中的不同外键条目唯一

转载 作者:行者123 更新时间:2023-12-01 00:03:45 25 4
gpt4 key购买 nike

假设有一个名为 Emails 的表

CREATE TABLE Emails (
ID nvarchar(40) NOT NULL,
Link_ID int NOT NULL,
GROUP int NOT NULL,
Email nvarchar(100) NOT NULL)

和一个名为 Info 的表

CREATE TABLE Info (
CUST_ID int NOT NULL,
Link_ID int NOT NULL)

这是表格的简化 View ,我无法更改其中的列。

我的目标是:

允许:

Cust_ID Group   Email
1 0 test1@allowed.com
1 1 test1@allowed.com

禁止:

Cust_ID Group   Email
1 0 test2@forbidden.com
1 0 test2@forbidden.com

Cust_ID Group Email
1 0 test3@forbidden.com
2 1 test3@forbidden.com

Cust_ID Group Email
1 0 test4@forbidden.com
2 0 test4@forbidden.com

如何在 MSSQL 2014 中实现这种独特性?

编辑:我的目标是这样的:

  • 一个客户可以有多个电子邮件地址
  • 每个客户的电子邮件地址必须是唯一的,而不是每个组,因此一个电子邮件地址可以用于一个客户的多个组,但不允许任何其他客户使用相同的电子邮件地址

最佳答案

直接你不能在多个表上放置 UNIQUE 约束,我建议你可以采用以下方法之一。

  1. 您可以使用触发器在插入数据之前验证数据如果被禁止则抛出错误。
  2. 在插入自身时,您可以使用 IF EXISTS 检查数据是否被允许。
  3. 创建一个 Indexed View 并对其设置 UNIQUE 约束。

我的建议是,创建一个索引 View 并设置所需的约束。要了解更多信息,您可以查看 Enforcing Complex Constraints with Indexed Views

关于sql - 如何使表b的列仅对表a中的不同外键条目唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629459/

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