【发布时间】:2019-02-11 11:20:57
【问题描述】:
假设有一个名为 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)
这是表格的简化视图,我无法更改表格的列。
我的目标是这样的:
允许:
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 中实现这种独特性?
编辑: 我的目标是这样的:
- 一个客户可以有多个电子邮件地址
- 每个客户的电子邮件地址必须是唯一的,而不是每个组,因此一个客户的多个组允许使用一个电子邮件地址,但任何其他客户都不允许使用相同的电子邮件地址
【问题讨论】:
-
所以一封邮件不能两次属于同一个组?在两列上使用唯一索引:Create Unique Indexes。试一试,如果它们不起作用,请发布您的尝试,并说明为什么它们没有起作用。
-
请解释允许和不允许的逻辑,从结果中猜测既困难又耗时(并且容易出错)。还要解释你的表之间的链接。
-
我很困惑。您提到了两张表,但示例数据似乎只来自一张。我认为您的数据模型有些问题,但是对于您提供的示例和表格,您将需要使用触发器。
标签: sql sql-server sql-server-2014