2つの異なるテーブルを使用します。1つは「アクティブ」のときにオブジェクトを保持し、もう1つは「非アクティブ」になるとオブジェクトを保持します。したがって、IDは両方のテーブル(結合された)ごとに一意です。両方のテーブルでIDが一度だけ表示されるように、IDの制約を作成するにはどうすればよいですか?
SQL Serverを使用しています。
これでうまくいくと思います。
CREATE TABLE Foo
(
FooId INT PRIMARY KEY,
Active BIT NOT NULL,
UNIQUE(FooId, Active)
)
CREATE TABLE FooActive
(
FooId INT PRIMARY KEY,
Active AS CAST(1 AS BIT) PERSISTED,
FOREIGN KEY (FooId, Active) REFERENCES Foo(FooId, Active)
)
CREATE TABLE FooInActive
(
FooId INT PRIMARY KEY,
Active AS CAST(0 AS BIT) PERSISTED,
FOREIGN KEY (FooId, Active) REFERENCES Foo(FooId, Active)
)