我正在创建一个看起来像这样的表。
CREATE TABLE packages
(
productCode char(2)
, name nvarchar(100)
, ...
)
如何确保productCode始终是两个值XJ
或XD
中的一个?
答案 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版本更容易维护。