Способ добавить ограничение между двумя доменами в таблице без использования триггера? - PullRequest
4 голосов
/ 17 февраля 2010

У меня есть следующая таблица, Client.

create table Client (
    ClientID    int identity primary key,
    TaxID       varchar(12),
    SSN         varchar(12)
)
GO

Клиент может иметь либо TaxID, либо SSN, либо оба. Но любой из них должен существовать.
В настоящее время я применяю правило через следующий триггер.

create trigger trgClient_UniqueTaxIDSSN
    on Client
    after Insert, Update
as
    --; Check if either TaxID or SSN is not null.

Но есть ли способ объявить ограничение для обеспечения соблюдения правила?

Ответы [ 4 ]

5 голосов
/ 17 февраля 2010
ALTER TABLE Client ADD CONSTRAINT ck_TaxIDorSSN CHECK 
    (TaxID is not null or SSN is not null)
1 голос
/ 17 февраля 2010

Вы можете создать Проверочное ограничение , которое проверяет наличие нуля в любом поле:

ALTER TABLE Client ADD CONSTRAINT cn_TaxIDorSSNnotNULL CHECK 
  (TaxID IS NOT NULL OR SSN IS NOT NULL)
1 голос
/ 17 февраля 2010

A Ограничение CHECK , которое проверяет наличие нуля с логическим ИЛИ, похоже, помогает.

1 голос
/ 17 февраля 2010

Вы должны быть в состоянии создать Проверочное ограничение на клиентской таблице, чтобы сделать это.

http://msdn.microsoft.com/en-us/library/ms188258.aspx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...