例如,具有表:如何執行包含多個表的唯一性規則?
Companies (CompanyID)
Workers (WorkerID, CompanyID)
Users (WorkerID, Username)
隨着定義的正確關係,我怎麼強制執行一個用戶的用戶名是在公司裏的職工在獨特的預測?
例如,具有表:如何執行包含多個表的唯一性規則?
Companies (CompanyID)
Workers (WorkerID, CompanyID)
Users (WorkerID, Username)
隨着定義的正確關係,我怎麼強制執行一個用戶的用戶名是在公司裏的職工在獨特的預測?
您可以使用索引視圖此
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+上這些默認是打開的。
你不能直接,但你有幾個選擇:
進行非標準化的用戶表位,並添加CompanyID它。
使用插入/更新觸發器進行驗證。
您也可以考慮:
,並確保WorkerNo
是公司內唯一:
alter table Workers
add constraint un_co_wrk unique (CompanyID, WorkerNo) ;
+1打我給它。 – 2011-05-16 16:18:44
完美,這是做到了。 – 2011-05-16 17:12:10