Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Констрейн проверяющий заполненность поля  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
Всем добрый день.
Возникла необходимость проверять, что заполнено одно поле из двух и только одно с помощью констрейна.
А т.к. с констрейном я никогда не работал, то понятия не имею как это делается.
Буду очень благодарен за помощь. =)
18 окт 12, 14:56    [13340874]     Ответить | Цитировать Сообщить модератору
 Re: Констрейн проверяющий заполненность поля  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
rekly_ru,

Может так?
 ALTER TABLE [dbo].[ваша таблица]  WITH CHECK ADD CHECK ((поле1 IS NOT NULL or поле2 IS NOT NULL ))
18 окт 12, 15:03    [13340944]     Ответить | Цитировать Сообщить модератору
 Re: Констрейн проверяющий заполненность поля  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
trew, спасибо за помощь.
18 окт 12, 16:30    [13341753]     Ответить | Цитировать Сообщить модератору
 Re: Констрейн проверяющий заполненность поля  [new]
Sergei.Agalakov
Member

Откуда:
Сообщений: 575
Не так.
автор
заполнено одно поле из двух и только одно

А у вас OR в проверке, так что оба поля могут быть NOT NULL. Должно быть
ALTER TABLE [dbo].[T1]  WITH CHECK ADD CHECK ( (C1 IS NOT NULL and C2 IS NULL ) or (C1 IS NULL and C2 IS NOT NULL ) )
18 окт 12, 18:22    [13342649]     Ответить | Цитировать Сообщить модератору
 Re: Констрейн проверяющий заполненность поля  [new]
rekly_ru
Member

Откуда: Москва
Сообщений: 8
Sergei.Agalakov, спасибо, разобрался.
19 окт 12, 09:47    [13344539]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить