sql >> Databáze >  >> RDS >> Sqlserver

Hodnota pole musí být jedinečná, pokud není NULL

Vytvořím pohled s indexem, který ignoruje hodnoty null prostřednictvím klauzule where...tj. pokud do tabulky vložíte hodnotu null, zobrazení je to jedno, ale pokud vložíte hodnotu bez hodnoty null, zobrazení vynutí omezení.

create view dbo.UniqueAssetTag with schemabinding
as
select asset_tag
from dbo.equipment
where asset_tag is not null

GO

create unique clustered index ix_UniqueAssetTag
on UniqueAssetTag(asset_tag)

GO

Takže moje tabulka vybavení má nyní sloupec asset_tag, který umožňuje více hodnot null, ale pouze jedinečné nenulové hodnoty.

Poznámka:Pokud používáte mssql 2000, budete muset "NASTAVIT ARITHABORT ZAPNUTO " těsně předtím, než se v tabulce provede jakékoli vložení, aktualizace nebo odstranění. Určitě to není vyžadováno na mssql 2005 a novějších.



  1. Nyní nebo brzy jsou k dispozici další online operace

  2. Nasazení MySQL Galera Cluster 4.0 na Amazon AWS EC2

  3. Transformační příběhy na konferenci MariaDB OpenWorks

  4. příkaz UPDATE pro opětovné přiřazení hodnoty sloupce podle číselného vzorce