У меня есть таблица, что-то вродеограничение уникальности управляется битовой колонке
FieldsOnForms(
FieldID int (FK_Fields)
FormID int (FK_Forms)
isDeleted bit
)
пара (FieldID, FormID) должен быть уникальным, но только если строка не удаляется (IsDeleted = 0).
Можно ли определить такое ограничение в SQLServer 2008? (без использования триггеров)
P.S. Параметр Setting (FieldID, FormID, isDeleted) уникален, добавляет возможность отмечать одну строку как удаленную, но я хотел бы иметь возможность установить n строк (для каждого идентификатора FieldID, FormID) на isDeleted = 1 и иметь только один с IsDeleted = 0
+1 лучший ответ ... – gbn
Хотя у меня есть некоторая ошибка из-за поля бит (преобразование столбца в тип данных константы не поддерживается для фильтрованных индексов), это, по-видимому, решение, к которому я уже обращался. – jaraics
@jaraics - Я только что создал таблицу в вашем вопросе, а затем индекс в своем ответе, и он создан без ошибок. Кроме того, если вы сталкиваетесь с несоответствиями типа данных, обычно лучше использовать CAST (или CONVERT) константу для типа столбца, а не наоборот. Не уверен, что это исправит вашу проблему. –