sql >> Base de Datos >  >> RDS >> Sqlserver

Restricción para un solo registro marcado como predeterminado

Usar un índice filtrado único

En SQL Server 2008 o superior, simplemente puede usar un índice filtrado único

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

Dónde está la mesa

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

Por ejemplo, si intenta insertar muchas filas con el mismo FormID y isDefault establecido en 1 tendrá este error:

No se puede insertar una fila de clave duplicada en el objeto 'dbo.TableName' con un índice único 'IX_TableName_FormID_isDefault'. El valor de la clave duplicada es (1).

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