sql >> Database teknologi >  >> RDS >> Sqlserver

Begrænsning for kun én post markeret som standard

Brug et unikt filtreret indeks

På SQL Server 2008 eller nyere kan du blot bruge et unikt filtreret indeks

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
    ON TableName(FormID)
    WHERE isDefault = 1

Hvor bordet er

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)

For eksempel hvis du forsøger at indsætte mange rækker med samme FormID og isDefault indstillet til 1 vil du få denne fejl:

Kan ikke indsætte dublet nøglerække i objektet 'dbo.TableName' med unikt indeks 'IX_TableName_FormID_isDefault'. Dubletnøgleværdien er (1).

Kilde:http://technet.microsoft.com/en-us/library/cc280372.aspx



  1. Java-type for dato/klokkeslæt, når du bruger Oracle Date med Hibernate

  2. Database + Windows-godkendelse + brugernavn/adgangskode?

  3. sql gruppe efter versus distinkt

  4. Optimeringsfaser og mistede muligheder