Toto je nedorozumění.UNIQUE
omezení přesně co chceš. Více NULL
hodnoty mohou koexistovat ve sloupci definovaném UNIQUE
.
Manuál:
Obecně platí, že jednoznačné omezení je porušeno, když je v tabulce více než jeden řádek, kde jsou hodnoty všech sloupců zahrnutých v podmínce stejné. Dvě nulové hodnoty se však v tomto srovnání nepovažují za stejné. To znamená, že i za přítomnosti jedinečného omezení je možné ukládat duplicitní řádky, které obsahují hodnotu null v alespoň jednom z omezených sloupců. Toto chování odpovídá standardu SQL, ale slyšeli jsme, že jiné databáze SQL nemusí toto pravidlo dodržovat. Buďte tedy opatrní při vývoji aplikací, které mají být přenosné.
Tučné zdůraznění moje.
Uvědomte si, že typy znaků umožňují prázdný řetězec (''
), což není NULL
a vyvolalo by to jedinečné porušení, stejně jako jakákoli jiná nenulová hodnota, pokud je zadána na více než jednom řádku.