SQL Server 2008 - Как добавить ограничение, которое не позволяет отображать одно и то же значение в столбце A и столбце B? - PullRequest
4 голосов
/ 13 мая 2011

У меня есть два varchar столбца (ColA, ColB) в одной таблице (Table1)

Есть ли способ создать ограничение, которое бы препятствовало появлению одного и того же значения в обоих ColA а ColB?


Пример


Исходная таблица :

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

Вставить команду, которую яхотел бы потерпеть неудачу

Insert into Table1 values ('Bob', 'Jill')

Нежелательный результат

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

Ответы [ 2 ]

4 голосов
/ 13 мая 2011

Вам нужно будет реализовать эту логику ограничения как Trigger.

3 голосов
/ 13 мая 2011

@ Митч Пшеница верна.

Вот рабочий код:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...