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

时间:2008-10-23 18:13:27

标签: sql sql-server

我正在创建一个看起来像这样的表。

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

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

4 个答案:

答案 0 :(得分:10)

ALTER TABLE packages
ADD CONSTRAINT constraintname CHECK (productCode in ('XJ', 'XD'))

答案 1 :(得分:8)

foreign key设为查找表,或添加check constraint来强制执行。

答案 2 :(得分:3)

CREATE TABLE packages
(
  productCode char(2)
  , name nvarchar(100) 
  , ...
  ,CONSTRAINT productCode CHECK (productCode in ('XJ','XD') )
)

答案 3 :(得分:1)

在这种情况下,听起来像ProductCode的valueset是非常有限的,并且你不希望它在可预见的未来增长,所以我倾向于同意checkconstraint答案。然而,在大多数情况下,我会按照格兰特先生的建议实施外键解决方案,因为我的客户每天都有一次改变主意(以及要求)的恶习。在那种情况下,我的到期是FK版本更容易维护。