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

Откуда:
Сообщений: 660
привет
есть таблица с уникальным индексом по двум полям
так же есть примари ключ identy
задача вставлять записи в таблицу - при этом известно что довольно часто будут пытаться вставлять дублирующиеся строки - а они в не нужны
(есть клиентское приложение которое при запуске пытается залить в базу примерно 50К строк - и после первого запуска эти строки) уже будут в таблице
а всего записей около 10МИО
подскажите как поступить
30 ноя 12, 00:56    [13553283]     Ответить | Цитировать Сообщить модератору
 Re: Подскажиет как правильно вставлять записи в таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вставлять во времянку, после из времянки то, что not exists.
30 ноя 12, 01:00    [13553292]     Ответить | Цитировать Сообщить модератору
 Re: Подскажиет как правильно вставлять записи в таблицу  [new]
Alexander Titkin
Member

Откуда: Москва
Сообщений: 91
Сергей, а как быть с дублями во вставляемых записях?
30 ноя 12, 22:10    [13559360]     Ответить | Цитировать Сообщить модератору
 Re: Подскажиет как правильно вставлять записи в таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alexander Titkin
Сергей, а как быть с дублями во вставляемых записях?
Александр. Отдыхайте после тяжелой трудовой недели уже. :P
30 ноя 12, 22:41    [13559484]     Ответить | Цитировать Сообщить модератору
 Re: Подскажиет как правильно вставлять записи в таблицу  [new]
Crimean
Member

Откуда:
Сообщений: 13147
как вариант:

-- drop table dbo.a1
-- create table dbo.a1 ( id int primary key , flag int )
-- create unique index i_a1_1 on dbo.a1( flag ) with ( IGNORE_DUP_KEY = on ) 


делаем тест:

insert into dbo.a1 
select 1, 1

select @@rowcount as [rows]
go
insert into dbo.a1 
select 2, 2
union all select 1, 1

select @@rowcount as [rows]
go
select * from dbo.a1
go



(1 row(s) affected)

rows        
----------- 
          1 

(1 row(s) affected)

Server: Msg 3604, Level 16, State 1, Line 1
Duplicate key was ignored.
rows        
----------- 
          1 

(1 row(s) affected)

id          flag        
----------- ----------- 
          1           1 
          2           2 

(2 row(s) affected)
30 ноя 12, 22:51    [13559528]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить