如何确保列包含一组值中的一个



我正在创建一个类似这样的表。

CREATE TABLE packages
(
  productCode char(2)
  , name nvarchar(100) 
  , ...
)

如何确保productCode始终是两个值XJXD之一?

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版本更容易维护。

相关内容

最新更新