2013-11-14 48 views
0

我的RelationshipCodeLookup表使用AgentTransmission表的主键字段作为外键。 RelationshipCodeLookup表中只能有5条记录,主键与AgentTransmission相同。复合键字段的数字限制

是否可以在RelationshipCodeLookup上创建一个复合关键字,其中包括来自AgentTransmission的外键和单独的int字段,该关键字只能达到5?例如,对于一个代理记录的完整组将是:

FK CK 
132 1 
132 2 
132 3 
132 4 
132 5 

如果另一个记录是试图用132FK加入,在桌子上的某种约束会被侵犯,记录无法被添加。

这可能吗?

回答

1

如果我正确理解你的问题,我认为CK列上的一个简单的检查约束将做你所需要的。 Check约束要求CK列中的值在指定的范围内(1到5)。

CREATE TABLE RelationshipCodeLookup(
    FK INT NOT NULL, 
    CK INT NOT NULL, 
    CONSTRAINT PK_RelationshipCodeLookup PRIMARY KEY CLUSTERED (FK, CK) 
); 
ALTER TABLE RelationshipCodeLookup WITH CHECK ADD CONSTRAINT CK_RelationshipCodeLookup CHECK (CK>=1 AND CK<=5); 
ALTER TABLE RelationshipCodeLookup CHECK CONSTRAINT CK_RelationshipCodeLookup;