Редактировать
На самом деле я только что заметил, что на SQL Server 2008 вы можете использовать отфильтрованный индекс для этого
CREATE UNIQUE NONCLUSTERED INDEX UIX ON YourTable (col) where col = 1
Оригинальный ответ
Самым простым способом, вероятно, было бы сохранить этот специальный ПК в отдельной таблице из одной строки.Не более одного аспекта строки может быть принудительно установлен с помощью проверочных ограничений.
CREATE TABLE OneRowTable
(
lock CHAR(1) DEFAULT 'X' NOT NULL PRIMARY KEY CHECK (lock = 'X'),
OtherTablePK int
);
В противном случае, если у вас может быть поле id, состоящее из натуральных чисел, вы можете добавить вычисляемый столбец со следующим определением
case when col=1 then -1 else id end
и добавьте к этому уникальное ограничение.