0

我有一个正在开发 SQL Server 2008 的小型数据库。

我总体上没有太多的 SQL 经验,因此很难找到有关此问题的适当模式的信息。

在此处输入图像描述

主表是“Provider”,Provider 可以是“MatchService”、“CompareService”或两者都取决于“ProviderTypeId”。我希望根据以下规则限制 MatchService 和 CompareService 表中的数据:

1) ProviderTypeId = Lender 的 Provider 既可以是 MatchService 也可以是 CompareService;

2) ProviderTypeId = Pingtree 的 Provider 只能是 MatchService。

我知道一个解决方案可能在架构中包含一个桥接表,但我不确定什么和在哪里。任何建议表示赞赏。

4

2 回答 2

1

怎么样 :

ALTER TABLE CompareService
ADD CONSTRAINT chkPTID CHECK (ProviderTypeId = Lender);
GO

拉吉

于 2013-05-22T09:03:18.980 回答
1

可能是这样的:

CREATE TRIGGER MatchService_ITrig
ON MatchService
FOR INSERT
AS
IF NOT EXISTS (
                SELECT
                        ProviderID
                    FROM
                        Provider p
                    INNER JOIN
                        inserted i ON
                            P.ID = I.ProviderID
                    WHERE
                        ProviderTypeID = 'Lender' OR
                        ProviderTypeID = 'PingTree'
                )
BEGIN
    ROLLBACK TRANSACTION
END
于 2013-05-22T09:16:59.740 回答