Violation of unique key, ale żeby kontynuowało insert

0

Nie wiem za bardzo jak szukać i jak napisać temat. Chodzi o to, że mam tabelę z trzema kolumnami. Na dwóch z nich jest założony unique key.

I teraz załóżmy, że robię hurtowy insert do tej tabeli z następującymi wartościami:
1, 2
1, 3
1, 4
1, 5

I teraz robię drugi hurtowy insert:
1, 5
1, 6
1, 7
1, 8

Jak widać, na początku mam drugi raz wartości 1 i 5, a więc jest naruszenie klucza. Problem polega na tym, że w tym momencie insert jest przerywany i dalsze elementy nie są wkładane. Czy da się coś zrobić, żeby dalsze elementy zostały zainsertowane? Albo inaczej - włożyć tylko te elementy, których nie ma - za pomocą jednego insertu. Da się?

0

musisz utworzyć zmienną tabelaryczną (lub tabelę tymczasową) i do niej wykonać insert, a następnie z niej przenieść do tabeli właściwej, np

declare @tab table (id1 int, id2 int)
insert into @tab values (1,5), (1,6), (1,7), (1,8)
insert into tabela
select t.id1, t.id2 from @tab t left join tabela tw on (t.id1=tw.id1 and t.id2=tw.id2) where tw.id2 is null
2

INSERT IGNORE albo INSERT ... ON DUPLICATE KEY

1 użytkowników online, w tym zalogowanych: 0, gości: 1