Sha*_*ani 5 database-design sql-server constraint
我们想使用两个不同的表,一个将在“活动”时保存一个对象,另一个将在它变为“非活动”时保存该对象。因此,每个表(组合)的 ID 都是唯一的。我们如何为 ID 创建一个约束,使得 ID 在两个表中只出现一次?
我们正在使用 SQL Server。
Mar*_*ith 12
我认为应该这样做。
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)
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4185 次 |
最近记录: |