2016-09-29 6 views
0

두 개의 열 Number varchar(32)Extension varchar(32)이있는 Phone이라는 테이블이 있습니다. 다음 기준에 따라 Constraint을 추가하고 싶습니다.두 개의 열을 기반으로 제약 조건 추가

  1. 연장을 제공하지 않을 경우 전화 번호가 필요합니다.
  2. 전화 번호가 제공되지 않으면 연장이 필요합니다.
  3. 전화 번호와 내선 번호를 모두 제공 할 수 있습니다. 내가 NumberExtension 내가 제약 예외가 제공하는 경우

    ALTER TABLE Phone 
    ADD CONSTRAINT RequirePhone 
    CHECK (
        Number IS NULL AND EXTENSION IS NOT NULL 
        OR (Number IS NOT NULL AND Extension IS NULL) 
    ); 
    

    constraint은, 그러나, 처음 두 조건을 충족합니다 :

나는 세 가지 요구 사항을 충족하기 위해 다음과 같은 Constraint을 추가했습니다.

... 
OR (Number IS NULL AND Extension IS NULL) 

을하지만 난 여전히 같은 오류가 발생합니다 :

내가 추가 노력했다.

해결 방법에 대한 제안 사항이 있으십니까?

답변

4

는 마지막 절은

OR (Number is NOT NULL AND Extension IS NOT NULL) 
+0

예 - IS NULL 대신이 중 하나를 삽입 할 수 있지만 NULL, NULL을 삽입 할 수 없습니다. –

+0

그게 내가 시도하려고했던거야. 감사. – smr5

1

(1) .. (3) 모든 나머지는 OK입니다 forbideen됩니다 모두 널 (NULL)에 해당되어야합니다하지 않습니다.

ALTER TABLE Phone 
ADD CONSTRAINT RequirePhone 
    CHECK (Number IS NOT NULL OR Extension IS NOT NULL) 
); 
+0

Serg의 대답은 정확한 (간결한) 대답이어야합니다. – jyao

관련 문제