更新时间:2022-12-10 16:21:22
您可以在视图上使用唯一索引来强制执行此约束.示例如下.
You can use a unique index on a view to enforce this constraint. Example below.
CREATE TABLE dbo.Requests
(
Id INT PRIMARY KEY,
RequestSchemeId INT,
ReceivedByUserId INT,
UNIQUE (RequestSchemeId, ReceivedByUserId)
)
CREATE TABLE dbo.ForwardedRequests
(
Id INT PRIMARY KEY,
RequestId INT REFERENCES Requests(Id),
ForwardedToUserId INT
)
GO
CREATE VIEW dbo.ForwardedUserRequestSchemes
WITH SCHEMABINDING
AS
SELECT ForwardedToUserId,
RequestSchemeId
FROM dbo.ForwardedRequests FR
JOIN dbo.Requests R
ON R.Id = FR.RequestId
GO
CREATE UNIQUE CLUSTERED INDEX ix
ON dbo.ForwardedUserRequestSchemes(ForwardedToUserId, RequestSchemeId)