otrdiena, 2010. gada 2. novembris

Piemērs: Indeks ar unikālām vērtībām, IGNORE_DUP_KEY

Piemērā parādīts, kā strādā IGNORE_DUP_KEY unikālam indeksam.

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
(
    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
Šajā gadījumā vaicājums izpildīsies bez kļūdām!

IGNORE_DUP_KEY = OFF
Skripts:
Create table TestTable
(
    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
Šajā gadījumā insert neizpildīsies, būs kļūdas ziņojums un neviena vērtība netiks ievietota tabulā!

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