例如,拥有表格:
Companies (CompanyID)
Workers (WorkerID, CompanyID)
Users (WorkerID, Username)
如果定义了正确的关系,我如何强制执行用户的用户名在其员工所在的公司中唯一的预测?
答案 0 :(得分:3)
您可以为此
使用索引视图CREATE VIEW dbo.EnforceConstraint
WITH SCHEMABINDING
AS
SELECT CompanyID, Username
FROM dbo.Users u
JOIN dbo.Workers w ON w.WorkerID = u.WorkerID
GO
CREATE UNIQUE CLUSTERED INDEX ix ON dbo.EnforceConstraint(CompanyID, Username)
有一些SET
选项需要用于修改索引视图的基表,但如果您使用的是SQL Server 2005+,则这些选项默认启用。
答案 1 :(得分:0)
你不能直接,但你确实有几个选择:
对Users表进行非规范化并将CompanyID添加到其中。
使用插入/更新触发器进行验证。
答案 2 :(得分:0)
您也可以考虑:
并确保WorkerNo
在公司内是唯一的:
alter table Workers
add constraint un_co_wrk unique (CompanyID, WorkerNo) ;