Tengo una tabla, algo así comorestricción UNIQUE controlado por una columna de bits
FieldsOnForms(
FieldID int (FK_Fields)
FormID int (FK_Forms)
isDeleted bit
)
El par (fieldID, FormID) debe ser único, pero sólo si no se elimina la fila (isDeleted = 0).
¿Es posible definir tal restricción en SQLServer 2008? (sin utilizar activadores)
P.S. La configuración (FieldID, FormID, isDeleted) para ser única agrega la posibilidad de marcar una fila como eliminada, pero me gustaría tener la posibilidad de establecer n filas (por FieldID, FormID) en isDeleted = 1, y tener solo una con isDeleted = 0
+1 mejor respuesta ... – gbn
Aunque tengo un error, debido al campo de bit (la conversión de una columna al tipo de datos de una constante no es compatible con los índices filtrados), este parece ser el solución que estaba buscando. – jaraics
@jaraics - Acabo de crear la tabla en su pregunta, y luego el índice en mi respuesta, y se creó sin error. Además, si encuentra incompatibilidades de tipo de datos, generalmente es mejor CASTAR (o CONVERTIR) la constante al tipo de columna, en lugar de hacerlo al revés. No estoy seguro si eso solucionaría su problema. –