Во-первых, у меня есть простой [SomeType]
стол, с колонками [ID]
и [Name]
.SQL Constraint на значение столбца в зависимости от значения другого столбца
Также у меня есть [SomeTable]
таблицы с полями, как:
[ID],
[SomeTypeID] (FK),
[UserID] (FK),
[IsExpression]
Наконец, я должен сделал на уровне базы данных ограничение, которое:
- для конкретных
[SomeType]
идентификаторов (фактически, для всех, кроме один), - для таких же
UserID
, - только одна запись должна иметь
[IsExpression]
равно 1
(IsExpression
имеетBIT
типа)
Я не знаю, если это сложное состояние или нет, но я понятия не имею, как писать. Как бы вы реализовали такое ограничение?
будет индексировать, чтобы избежать добавления новой записи с также [IsExpression] true, если у этого пользователя уже есть IsExpression true для этого SomeType? – prvit
@prvit, второй индекс - именно то, что вы хотите –
@prvit да, если индекс создается как 'UNIQUE', значит, вы не можете вводить какие-либо повторяющиеся записи в поля, которые являются частью индекса. –