为了简单起见:假设我们有包含这些定义的表:
create table t1 (id int primary key, f1 int references t2(f2), f3 int references t1(id) )
create table t2 (id int primary key, f2 int)
是否可以做一个约束,只允许在 f3 为 null 时设置 f1?这将如何完成?
最佳答案
首先,让我们检查用例并将它们转换为 bool 语句:
- 如果未设置 f1(即,它为
null
),则没有问题,我们不关心 f3。 - 如果设置了 f1(即,它不是
null
),f3 必须是null
。
这是一个简单的 or
条件 - f1 为 null 或 f3 为 null
。一旦我们理解了这一点,添加一个 check
约束就是一件简单的事情:
ALTER TABLE t1 ADD CONSTRAINT t1_chk CHECK (f1 IS NULL OR f3 IS NULL)
关于sql-server - 仅当 Microsoft sql server 中的 t1.f3 为空时,如何允许字段 t1.f1 引用 t2.f2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832321/