Я создаю таблицу, которая выглядит примерно так.
CREATE TABLE packages ( productCode char(2) , name nvarchar(100) , ... )
Как мне убедиться, что productCode всегда имеет одно из двух значений XJ или XD?
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. Однако в большинстве случаев я бы реализовал решение с использованием внешнего ключа, предложенное г-ном Грантом, поскольку у моих клиентов есть неприятная привычка менять свое мнение (а также требования) примерно раз в день. В этой ситуации мой опыт заключается в том, что версию FK легче поддерживать.