sql >> Database >  >> RDS >> Sqlserver

Beperking voor slechts één record gemarkeerd als standaard

Gebruik een unieke gefilterde index

Op SQL Server 2008 of hoger kunt u eenvoudig een uniek gefilterde index gebruiken

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

Waar de tafel is

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

Als u bijvoorbeeld veel rijen probeert in te voegen met dezelfde FormID en isDefault ingesteld op 1 krijgt u deze fout:

Kan geen dubbele sleutelrij invoegen in object 'dbo.TableName' met uniqueindex 'IX_TableName_FormID_isDefault'. De dubbele sleutelwaarde is (1).

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



  1. Database-omschakeling en failover voor Drupal-websites met MySQL of PostgreSQL

  2. Een overzicht van Quests Nieuwste databasebewakingsservice - Spotlight Cloud

  3. Tekenset wijzigen van latin1 naar UTF8 in MySQL

  4. SQL-groep op datumbereik