mboost-dp1

T-SQL og Unique Key Constraints


Gå til bund
Gravatar #1 - Cyrack
19. jul. 2007 18:04
Hej,

Har et problem med en MSSQL 2K server og et unique key index.
Tabellen har en fremmednøgle og et prioritetsnummer der skal danne et unikt index. Problemet er at ved indsættelse er det ikke sikkert at nøgleparene er unikke og jeg skal derfor have deaktiveret denne constraint netop når jeg opdaterer.

I følge MSDN burde jeg kunne gøre dette ved hjælp af

ALTER TABLE <tab_name> NOCHECK CONSTRAINT <constraint_name>


i en transaktion blot jeg aktiverer constraint'en igen inden jeg commiter transaktionen.

Behøver jeg sige at det fejler totalt, da min constraint netop ikke bliver deaktiveret?

Nogen der har en idé til hvorfor det opfører sig på den måde? Overser jeg noget indlysende?
Gravatar #2 - Blinklys
20. jul. 2007 11:26
Du siger at nøgleparrene ikke er unikke når du indsætter dem, og at du vil deaktivere unique-contraint'en, når du insætter i tabellen - den del forstår jeg godt. Men at du så vil aktivere contraint'en igen efter du har indsat rækkerne forstår jeg ikke helt - du har jo indsat ikke-unikke nøglepar i tabellen, og det vil ikke være muligt at smide contraint'en på igen. En contraint gælder jo også for data der allerede er i tabellen, det er ikke bare et "input-filter"...
Gravatar #3 - Cyrack
20. jul. 2007 13:06
Blinklys:

De er kun inkonsistens mens jeg indsætter. Når jeg er færdig (og commiter transaktionen) garanterer jeg selv for at der er konsistens.

Det der er problemet er at jeg ikke kan overbevise MSSQL om at det er okay overhovedet at deaktivere den constraint.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login