首页 > 解决方案 > SQL SERVER 为 2 Colmuns 两个不同的表添加检查约束

问题描述

您好我想为表添加检查约束,但我想比较来自不同表的两列

ALTER TABLE Installation 
ADD Constraint chk_1 check (DateInstallation < dateachat)

DateInstallation 是表 Installation 的一列,而 dateachat 来自另一个名为 Support 的表,那么如何做到这一点已知代码给了我一个错误,谢谢

标签: sqlsql-serverdatabasealter

解决方案


你不能用一个简单的check约束来做到这一点。你基本上有两个选择:

  1. 使用触发器。这需要insertupdate触发installation.
  2. 编写一个 UDF 以从另一个表中提取相应的值并使用它。

使用 UDF,约束看起来像:

ALTER TABLE Installation ADD Constraint chk_1 
    CHECK (DateInstallation < dbo.get_dateachat(installationId));

使用这些解决方案中的任何一个,您可能需要对第二个表进行约束以防万一dateachat发生变化。触发器和检查约束不会根据第二个表中的更改进行评估。


推荐阅读