sql >> Databasteknik >  >> RDS >> Sqlserver

Fältvärdet måste vara unikt om det inte är NULL

Jag skapar en vy med ett index som ignorerar nollorna genom where-satsen...dvs. om du infogar null i tabellen bryr vyn sig inte men om du infogar ett icke-nullvärde kommer vyn att upprätthålla begränsningen.

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

Så nu har min utrustningstabell en asset_tag-kolumn som tillåter flera nollvärden men bara unika icke-nullvärden.

Obs! Om du använder mssql 2000 måste du "STÄLLA PÅ ARITHABORT " precis innan någon infogning, uppdatering eller radering utförs på tabellen. Ganska säker på att detta inte krävs på mssql 2005 och uppåt.



  1. MySQL, REGEXP - Hitta ord som bara innehåller följande exakta bokstäver

  2. Lösenordet kontrollerar inte skiftlägeskänslighet

  3. Efter att ha importerat data i PostgreSQL bryter duplicerat nyckelvärde mot den unika begränsningen

  4. MySQL ORDER BY DESC är snabb men ASC är väldigt långsam