Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Уникальность по двум столбцам  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 624
необходимо как то реализовать следующее

например есть два столбца
col1 (int) and col2 (int) in table table1

например в табличку занесена запись col1 = 1, col2 = 2

Как сделать так что бы нельзя было занести запись col1=2, col2=1

--------------------------
Лень, движетель прогресса
27 окт 14, 10:53    [16762527]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
virus_system
Лень, движетель прогресса

не в этом случае
27 окт 14, 11:07    [16762584]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
Читайте про триггеры и ограничения.
27 окт 14, 11:08    [16762586]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
aleks2
Guest
virus_system
необходимо как то реализовать следующее

например есть два столбца
col1 (int) and col2 (int) in table table1

например в табличку занесена запись col1 = 1, col2 = 2

Как сделать так что бы нельзя было занести запись col1=2, col2=1

--------------------------
Лень, движетель прогресса


1. Вычисляемые столбцы
min (col1, col2) as c1
max(col1, col2) as c2

+

2. индекс на вычисляемые c1 и c2.
27 окт 14, 11:10    [16762594]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
virus_system

Как сделать так что бы нельзя было занести запись col1=2, col2=1

--------------------------
Лень, движетель прогресса


Поставьте ограничение col1 >= col2 и при вставке проверяйте в какое поле какое значение положить.
27 окт 14, 13:19    [16763215]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
aleks2
virus_system
необходимо как то реализовать следующее

например есть два столбца
col1 (int) and col2 (int) in table table1

например в табличку занесена запись col1 = 1, col2 = 2

Как сделать так что бы нельзя было занести запись col1=2, col2=1

--------------------------
Лень, движетель прогресса


1. Вычисляемые столбцы
min (col1, col2) as c1
max(col1, col2) as c2

+

2. индекс на вычисляемые c1 и c2.
1. в таком виде недопустимо. Однако:
с1 AS CASE WHEN col1<col2 THEN col1 ELSE col2 END
с2 AS CASE WHEN col1<col2 THEN col2 ELSE col1 END
27 окт 14, 13:29    [16763267]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
Веrd
Member

Откуда: Лазаревское
Сообщений: 588
virus_system
необходимо как то реализовать следующее

например есть два столбца
col1 (int) and col2 (int) in table table1

например в табличку занесена запись col1 = 1, col2 = 2

Как сделать так что бы нельзя было занести запись col1=2, col2=1

--------------------------
Лень, движетель прогресса


ИМХО, только триггеры.
27 окт 14, 17:09    [16764466]     Ответить | Цитировать Сообщить модератору
 Re: Уникальность по двум столбцам  [new]
aleks2
Guest
iap
aleks2
пропущено...


1. Вычисляемые столбцы
min (col1, col2) as c1
max(col1, col2) as c2

+

2. индекс на вычисляемые c1 и c2.
1. в таком виде недопустимо. Однако:
с1 AS CASE WHEN col1<col2 THEN col1 ELSE col2 END
с2 AS CASE WHEN col1<col2 THEN col2 ELSE col1 END

Ну, ты не лучше написал. Так ишо можно
с1 = CASE WHEN col1<col2 THEN col1 ELSE col2 END


А так-то был "псевдокод" - для вящей наглядности.
28 окт 14, 04:56    [16765826]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить