Avatar billede neoman Novice
08. september 2007 - 18:39 Der er 4 kommentarer og
1 løsning

Er NULL lig med NULL i en IS UNIQUE INDEX ?

Jeg har en kolonne med typen varchar(50), hvor tanken er, at der enten ikke forekommer nogen data, eller, såfremt der er data, at de er unikke. I DB'en har feltet en default værdi NULL

Jeg laver så en INDEX på kolonnen, med IS UNIQUE =TRUE, gående udfra at null <> null :-)

Men, MS SQL er vist smartere end mig, så kan ikke gemme to records hvor det pågældende felt er NULL i begge tilfælde fordi jeg får en exception med "duplicate key"

Har jeg misforstået noget, eller kan dette bare ikke lade sig gøre ?
Avatar billede arne_v Ekspert
08. september 2007 - 18:52 #1
Docs siger:

Columns that are used in a unique index should be set to NOT NULL, because multiple null values are considered duplicates when a unique index is created.
Avatar billede neoman Novice
08. september 2007 - 19:03 #2
Så er den vel ikke længere .. daaaaamn ! :) Tak, jeg har tydeligvis ikke fundet det rigtige sted at kigge i docs.  Eftersom a=null altid er false, uanset om  a indeholde r null eller ej så fik jeg det ekstrapoleret til at et null og et null var forskellige :)

Læg et svar.
Avatar billede arne_v Ekspert
08. september 2007 - 19:14 #3
Det står under CREATE INDEX.

Svar.

Som workaround kan du overveje et ikke unikt index og så en insert og update trigger.
Avatar billede arne_v Ekspert
08. september 2007 - 19:14 #4
En gang mere.
Avatar billede neoman Novice
08. september 2007 - 19:25 #5
tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester