Dette er en misforståelse.
Den UNIQUE
begrænsning gør præcis hvad du ønsker. Flere NULL
værdier kan eksistere side om side i en kolonne defineret UNIQUE
.
Manualen:
Generelt overtrædes en unik begrænsning, når der er mere end én række i tabellen, hvor værdierne for alle kolonnerne, der er inkluderet i begrænsningen, er ens. To nulværdier anses dog ikke for at være ens i denne sammenligning. Det betyder, at selv i tilstedeværelsen af en unik begrænsning er det muligt at gemme duplikerede rækker, der indeholder en nulværdi i mindst én af de begrænsede kolonner. Denne adfærd er i overensstemmelse med SQL-standarden, men vi har hørt, at andre SQL-databaser muligvis ikke følger denne regel. Så vær forsigtig, når du udvikler applikationer, der er beregnet til at være bærbare.
Fed fremhævelse mine.
Vær opmærksom på, at tegntyper tillader en tom streng (''
), hvilket ikke er en NULL
værdi og ville udløse en unik overtrædelse ligesom enhver anden ikke-nul værdi, når den indtastes i mere end én række.