mboost-dp1
T-SQL og Unique Key Constraints
- Forside
- ⟨
- Forum
- ⟨
- Programmering
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
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?
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?
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"...
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.