2011-05-13 3 views
4

나는이 하나의 테이블 (Table1)SQL Server 2008 - 열 A와 열 B에 같은 값이 나타나지 않도록하는 제약 조건을 어떻게 추가합니까?

ColAColB 모두에서 나타나는 동일한 값을 방해하는 제약 조건을 정교하게 할 수있는 방법이 있나요 두 varchar 열 (ColA, ColB)?



본래 도표 :

----------------------- 
| Col A | Col B | 
----------------------- 
| Alice | Bob | 
----------------------- 

삽입 명령 내가 실패 싶습니다

,210

원하지 않는 결과

----------------------- 
| ColA  | ColB | 
----------------------- 
| Alice | Bob | <-- Bob In Col B 
----------------------- 
| Bob  | Jill | <-- Bob in Col A 
----------------------- 

답변

4

당신은 Trigger 등이 제약 로직을 구현해야합니다.

3

@ 밀 Wheat은 정확합니다.

ALTER TRIGGER TABLE1_Check_Two_Col_Uniqueness ON TABLE1 
INSTEAD OF INSERT 
AS 

BEGIN 
    SET NOCOUNT ON 

    IF EXISTS  ( SELECT 1 FROM Table1 as T1 inner join inserted as I on I.ColA = T1.ColB) 
     OR EXISTS ( SELECT 1 FROM Table1 as T1 inner join inserted as I on I.ColB = T1.ColA) 
     BEGIN 
      RAISERROR('Error Inserting Table1_Record, it would cause a duplicate ColA and ColB', 16, 1) 
      RETURN 
     END 
    ELSE 
     BEGIN 
      INSERT INTO Table1 
      SELECT 
       ColA, 
       ColB 
      FROM 
       inserted 
     END 
END 
: 여기

몇 가지 작업 코드입니다