Как установить столбец целых чисел в SQL Server 2005, чтобы значения были больше 0? - PullRequest
7 голосов
/ 15 октября 2008

Вероятно, это простой ответ, но я не могу его найти. У меня есть таблица со столбцом целых чисел, и я хочу, чтобы при вставке строки значение в этом столбце было больше нуля. Я мог бы сделать это на стороне кода, но подумал, что было бы лучше применить это на столе.

Спасибо!

Я ошибся с моим последним комментарием, теперь все хорошо.

Ответы [ 4 ]

15 голосов
/ 15 октября 2008

Вы можете использовать проверочное ограничение для столбца. IIRC синтаксис для этого выглядит так:

create table foo (
    [...]
   ,Foobar int not null check (Foobar > 0)
    [...]
)

Как следует из приведенного ниже плаката (спасибо Константину), вы должны создать проверочное ограничение вне определения таблицы и дать ему осмысленное имя, чтобы было понятно, к какому столбцу он применяется.

alter table foo
  add constraint Foobar_NonNegative
      check (Foobar > 0)

Текст проверочных ограничений можно получить из словаря системных данных в sys.check_constraints:

select name
      ,description
  from sys.check_constraints
 where name = 'Foobar_NonNegative'
5 голосов
/ 15 октября 2008

Создать ограничение базы данных:

ALTER TABLE Table1 ADD CONSTRAINT Constraint1 CHECK (YourCol > 0)

Вы также можете иметь довольно сложные ограничения, включающие несколько столбцов. Например:

ALTER TABLE Table1 ADD CONSTRAINT Constraint2 CHECK (StartDate<EndDate OR EndDate IS NULL)
0 голосов
/ 15 октября 2008

Полагаю, вы хотите добавить ограничение в поле таблицы:

ALTER TABLE tableName WITH NOCHECK
ADD CONSTRAINT constraintName CHECK (columnName > 0)

Этот необязательный NOCHECK используется для предотвращения применения ограничения к существующим строкам данных (которые могут содержать недопустимые данные) и для добавления ограничения.

0 голосов
/ 15 октября 2008

Добавление ограничения CHECK при создании таблицы

CREATE TABLE Test(
      [ID] [int]  NOT NULL,
      [MyCol] [int] NOT NULL CHECK (MyCol > 1)
)
...