Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
rekly_ru Member Откуда: Москва Сообщений: 8 |
Всем добрый день. Возникла необходимость проверять, что заполнено одно поле из двух и только одно с помощью констрейна. А т.к. с констрейном я никогда не работал, то понятия не имею как это делается. Буду очень благодарен за помощь. =) |
18 окт 12, 14:56 [13340874] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
rekly_ru Member Откуда: Москва Сообщений: 8 |
trew, спасибо за помощь. |
18 окт 12, 16:30 [13341753] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
rekly_ru Member Откуда: Москва Сообщений: 8 |
Sergei.Agalakov, спасибо, разобрался. |
19 окт 12, 09:47 [13344539] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |