复合键字段的数字限制

时间:2013-11-14 17:08:14

标签: sql sql-server sql-server-2008 composite

我的RelationshipCodeLookup表使用AgentTransmission表的主键字段作为外键。 RelationshipCodeLookup表中只有5条记录与AgentTransmission主键相同。

是否可以在RelationshipCodeLookup上创建一个复合键,其中包含来自AgentTransmission的外键和一个最多只有5个的int字段?例如,一个代理的完整记录组将是:

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

如果尝试使用FK 132添加其他记录,则会违反对表的某种约束,并且无法添加记录。

这可能吗?

1 个答案:

答案 0 :(得分: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;