IGNORE_DUP_KEY noklusētā vērtība ir OFF, tas nozīmē, ka gadījumā, ja tabulā ievietos vērtību, kas jau tajā ir ievietota, komanda tiks pārtraukta un tiks izmests kļūdas paziņojums.
Savukārt, ja IGNORE_DUP_KEY ir ON, tad būs brīdinājuma ziņojums, ka dublikāts tiek ignorēts, tomēr kļūdas nebūs! Šo vērtību nevar uzstādīt uz ON, ja indekss nav veidots uz kolonnas, kas ir unikāla!
Piemēros tiek izveidota TestTable, kurā tiek mēģināts ievietot vērtības 1,1,2 (tātad, kolonā i uz kuras izveidots unikāls indekss). MSDN raksts par šo tēmu šeit.
IGNORE_DUP_KEY = ON
Skripts:
Create table TestTableŠajā gadījumā vaicājums izpildīsies bez kļūdām!
(
i int
)
go
create unique index IX on TestTable (i) with (IGNORE_DUP_KEY = ON)
go
insert into TestTable (i)
Select * from (Select 1 skaitlis union all Select 1 union all Select 2) x
go
select * from testtable
go
drop table testtable
IGNORE_DUP_KEY = OFF
Skripts:
Create table TestTableŠajā gadījumā insert neizpildīsies, būs kļūdas ziņojums un neviena vērtība netiks ievietota tabulā!
(
i int
)
go
create unique index IX on TestTable (i) with (IGNORE_DUP_KEY = OFF)
go
insert into TestTable (i)
Select * from (Select 1 skaitlis union all Select 1 union all Select 2) x
go
select * from testtable
go
drop table testtable
Piezīme: izpildot "Update", kuras rezultātā kolonnas vērtība tiek mēģināts mainīt uz jau eksistējošu vērtību, kļūda būs abos gadījumos neatkarīgi no IGNORE_DUP_KEY vērtības.
Nav komentāru:
Ierakstīt komentāru