すべての行で 1 つの値のみが 1 で、他のすべての値が 0 であることを保証する制約を列に作成する必要があります。
トリガーを使用したソリューションは存在しますが、何かを組み込みたいと思います。
そのようなことはまったく可能ですか?
すべての行で 1 つの値のみが 1 で、他のすべての値が 0 であることを保証する制約を列に作成する必要があります。
トリガーを使用したソリューションは存在しますが、何かを組み込みたいと思います。
そのようなことはまったく可能ですか?
編集
実際、あなたが SQL Server 2008 を使用していることに気付きました。これには、フィルター選択されたインデックスを使用できます。
CREATE UNIQUE NONCLUSTERED INDEX UIX ON YourTable (col) where col = 1
元の回答
おそらく最も簡単な方法は、この 1 つの特別な pk を別の 1 行のテーブルに格納することです。チェック制約を使用して適用できる行のアスペクトは 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
それに一意の制約を追加します。