0

SQL Server 2008 を開発している小さなデータベースがあります。

全体的に SQL の経験があまりないので、この問題の適切なパターンに関する情報を見つけるのは難しいと感じています。

ここに画像の説明を入力

メイン テーブルは「Provider」です。プロバイダーは、「ProviderTypeId」に応じて「MatchService」、「CompareService」、またはその両方になります。次のルールに基づいて、MatchService テーブルと CompareService テーブルのデータを制限しようとしています。

1) ProviderTypeId = Lender を持つプロバイダーは、MatchService と CompareService の両方になることができます。

2) ProviderTypeId = Pingtree を持つプロバイダーは、MatchService のみになることができます。

解決策にはおそらくスキーマにブリッジ テーブルが含まれていることはわかっていますが、何がどこにあるかはわかりません。アドバイスをいただければ幸いです。

4

2 に答える 2

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 に答える
1

どうですか :

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

ラージ

于 2013-05-22T09:03:18.980 に答える