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

Откуда:
Сообщений: 274
Добрый день!

Каким образом можно запретить вставку дубликатов (по 4 полям) строк в таблицу, не применяя unique index (в таблице уже есть дубликаты и их много, требуется анализировать только новые вставки)?

Заранее благодарю.
9 дек 15, 09:31    [18533420]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Добавить уникальный индекс с условием, например по полю-дате, от текущего числа, или по полю-идентити, если есть. В общем уникальный индекс с
Условием вам в помощь
9 дек 15, 09:37    [18533452]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Евгенич
Добрый день!

Каким образом можно запретить вставку дубликатов (по 4 полям) строк в таблицу, не применяя unique index (в таблице уже есть дубликаты и их много, требуется анализировать только новые вставки)?

Заранее благодарю.


А вы, батенька, извращенец. Ну пиши костыль, MERGE какой-нибудь на уровне ETL, если уже ничего не поменять по дубликатам.
9 дек 15, 09:42    [18533479]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Knyazev Alexey
Добавить уникальный индекс с условием, например по полю-дате, от текущего числа, или по полю-идентити, если есть. В общем уникальный индекс с
Условием вам в помощь


Пытался так:

Create unique index on Table1 (Column1,Column2,Column3,Column4) where Column>0


пишет incorrect syntax near where

ps. MSSQL2012
9 дек 15, 09:49    [18533500]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Помарочку допустил:
Create unique index on Table1 (Column1,Column2,Column3,Column4) where Column1>0
9 дек 15, 09:51    [18533504]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Евгенич
Member

Откуда:
Сообщений: 274
так и ругаеццо
9 дек 15, 10:09    [18533606]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
pXn
Member

Откуда: Косопузая
Сообщений: 45
Евгенич,

Триггер.
9 дек 15, 10:11    [18533620]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Евгенич
Member

Откуда:
Сообщений: 274
pXn
Евгенич,

Триггер.


Уже начал, но хочу добить и вариант через фильтрованный индекс, борюсь с проблемой в синтаксисе
9 дек 15, 10:23    [18533711]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Взял прям из документашки:

CREATE NONCLUSTERED INDEX "FIBillOfMaterialsWithEndDate"
    ON Production.BillOfMaterials (ComponentID, StartDate)
    WHERE EndDate IS NOT NULL;


Тоже ругачка на where
9 дек 15, 10:48    [18533852]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
Тоже ругачка на where

Уровень совместимости базы наверное 80 ?
9 дек 15, 10:49    [18533865]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Проблема была в том что подключался через 2012 студию к базе на 2005 sql, а там условия where пока еще нет
9 дек 15, 10:51    [18533877]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение на вставку дубликатов  [new]
stdvb
Member

Откуда:
Сообщений: 43
Евгенич,
Тогда может так - добавить в таблицу столбец с дефолтным значением. Для всех имеющихся строк обновить его уникальными значениями (достаточно что б они были уникальными в пределах каждого дубликата). Создать unique index на ваш столбец + новый.
9 дек 15, 11:04    [18533932]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить