如何将SQL表约束到多个特定类型

时间:2013-05-22 08:48:07

标签: sql-server sql-server-2008 constraints

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

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

enter image description here

主表是'Provider',Provider可以是'MatchService','CompareService',或两者都取决于'ProviderTypeId'。我希望根据以下规则禁止MatchService和CompareService表中的数据:

1)具有ProviderTypeId = Lender的Provider可以是MatchService和CompareService;

2)具有ProviderTypeId = Pingtree的提供者只能是MatchService。

我知道解决方案可能包含架构中的桥接表,但我不确定哪些内容和位置。任何建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

怎么样:

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

拉​​吉

答案 1 :(得分:1)

Maby是这样的:

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