我正在创建一个类似这样的表。
CREATE TABLE packages
(
productCode char(2)
, name nvarchar(100)
, ...
)
如何确保productCode始终是两个值XJ
或XD
之一?
ALTER TABLE packages
ADD CONSTRAINT constraintname CHECK (productCode in ('XJ', 'XD'))
要么将其作为查找表的外键,要么添加一个检查约束来强制执行。
CREATE TABLE packages
(
productCode char(2)
, name nvarchar(100)
, ...
,CONSTRAINT productCode CHECK (productCode in ('XJ','XD') )
)
在这种情况下,听起来ProductCode的值集非常有限,而且您不希望它在可预见的未来增长,所以我倾向于同意checkconstraint的答案。然而,在大多数情况下,我会按照Grant先生的建议实施外键解决方案,因为我的客户有一个坏习惯,每天大约改变一次他们的想法(以及要求)。在这种情况下,我认为FK版本更容易维护。