2009-09-02 2 views
1

하나만 채워야 만하는 제약 조건을 만드는 방법을 null로 허용하는 2 개의 필드가 있습니까?

 table1 
------------- 
id unique primary int 
myVal1 int null (fk) 
myVal2 int null (fk) 
myData int not null 

하나의 값만 채울 수 있도록이 테이블에서 제약 조건을 만드는 가장 좋은 방법은 무엇일까요?

다음과 같이 작동합니다.

insert into table1 (myval1,myData) values (1,234) 
insert into table1 (myval2,myData) values (1,123) 

그러면 가 작동하지 않습니다.

insert into table1 (myData) values (234) 
insert into table1 (myVal1,myval2,myData) values (1,2,123) 

답변

1

는 점검 제한 조건 사용해보십시오 : 몇 시간에 그것을 테스트하는 것

CREATE TABLE dbo.Table1 
    (
    rowID int NOT NULL primary key identity(1,1), 
    myVal1 int NULL, 
    myVal2 int NULL, 
    myData int NOT NULL 
    ) ON [PRIMARY] 
GO 
ALTER TABLE dbo.Table1 ADD CONSTRAINT 
    CK_Table1_myVal1_or_myVal2 CHECK ((myVal2 IS NOT NULL AND myVal1 IS NULL) OR (myVal2 IS NULL AND myVal1 IS NOT NULL)) 
GO 
+0

을, 지금 당장은 그렇게 할 수 없어요. 만약 내가 원하는 것처럼 작동한다면, 당신은 녹색 체크를 받게 될 것입니다. – Fredou

관련 문제