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

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

Есть табличка, например...
table 1
colPrimary int,
col1 varchar(50),
col2 int

col1 - уникальное по индексу...

В данную табличку инсертятся данные...
Есть много данных где поле col1 = '' (пусто)... Не спрашивайте зачем...

Вопрос в следующем, если я буду пустые значения инсертить, то sql руганется на второй записи (уникальность).

Как мне в это поле (триггерами) внести какое нибдуль уникальное значение? (Желательно инкрементный идентификатор colPrimary)?
14 сен 11, 14:50    [11275882]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное поле (insert)  [new]
iap
Member

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

может, фильтрованный индекс сгодится?
Чтобы пустые строки просто не влияли на уникальность.
От версии ещё зависит.
14 сен 11, 14:52    [11275900]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное поле (insert)  [new]
iljy
Member

Откуда:
Сообщений: 8711
virus_system
проблема в следующем...

Есть табличка, например...
table 1
colPrimary int,
col1 varchar(50),
col2 int

col1 - уникальное по индексу...

В данную табличку инсертятся данные...
Есть много данных где поле col1 = '' (пусто)... Не спрашивайте зачем...

Вопрос в следующем, если я буду пустые значения инсертить, то sql руганется на второй записи (уникальность).

Как мне в это поле (триггерами) внести какое нибдуль уникальное значение? (Желательно инкрементный идентификатор colPrimary)?

Версия сервера какая? Если 2008 - можно использовать фильтрованые индексы. Если нет - добавьте в индекс вычисляемое поле ColModifier as (case when col1 is null then colPrimary else 0 end).
14 сен 11, 14:54    [11275918]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное поле (insert)  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 624
iljy
Версия сервера какая? Если 2008 - можно использовать фильтрованые индексы. Если нет - добавьте в индекс вычисляемое поле ColModifier as (case when col1 is null then colPrimary else 0 end).


SQl server 2005.

А можно поподробнее по поводу вычисляемых полей в индексе? Как это? Не разу с этим не сталкивался.
14 сен 11, 15:10    [11276034]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное поле (insert)  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 624
iljy, или это нужно сначала создать вычисляемое поле в таблице?
14 сен 11, 15:27    [11276166]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное поле (insert)  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Как построить unique index игнорируя null
14 сен 11, 15:29    [11276185]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное поле (insert)  [new]
virus_system
Member

Откуда: Ульск
Сообщений: 624
iap, спасибо, разобрался
14 сен 11, 16:33    [11276884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить