我有一个小型数据库,我正在开发SQL Server 2008。
我的整体SQL经验不多,因此很难找到有关此问题的适当模式的信息。
主表是'Provider',Provider可以是'MatchService','CompareService',或两者都取决于'ProviderTypeId'。我希望根据以下规则禁止MatchService和CompareService表中的数据:
1)具有ProviderTypeId = Lender的Provider可以是MatchService和CompareService;
2)具有ProviderTypeId = Pingtree的提供者只能是MatchService。
我知道解决方案可能包含架构中的桥接表,但我不确定哪些内容和位置。任何建议表示赞赏。
答案 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