sql - SQL SERVER 为 2 Colmuns 两个不同的表添加检查约束
问题描述
您好我想为表添加检查约束,但我想比较来自不同表的两列
ALTER TABLE Installation
ADD Constraint chk_1 check (DateInstallation < dateachat)
DateInstallation 是表 Installation 的一列,而 dateachat 来自另一个名为 Support 的表,那么如何做到这一点已知代码给了我一个错误,谢谢
解决方案
你不能用一个简单的check
约束来做到这一点。你基本上有两个选择:
- 使用触发器。这需要
insert
并update
触发installation
. - 编写一个 UDF 以从另一个表中提取相应的值并使用它。
使用 UDF,约束看起来像:
ALTER TABLE Installation ADD Constraint chk_1
CHECK (DateInstallation < dbo.get_dateachat(installationId));
使用这些解决方案中的任何一个,您可能需要对第二个表进行约束以防万一dateachat
发生变化。触发器和检查约束不会根据第二个表中的更改进行评估。
推荐阅读
- c++ - 如何将 const char* [] 转换为单个内存块,例如 char* ptr
- windows-10 - 如果我无法在 Python shell 和 Windows 10 中的 IDLE 中键入双下划线怎么办?
- ruby - 我可以使用这种表示法在对象上调用自定义方法吗?
- optaplanner - Optaplanner:动态终止配置
- asp.net-core - 验证客户端证书
- c# - 类型的成员“aim1_Accuracy”在数据读取器中没有同名的对应列
- reactjs - 从消费者 componentDidMount 更新反应上下文会导致无限重新渲染
- python - Google Cloud Datastore:计算处于特定状态的所有实体
- r - 以相等的间隔对数据帧中的组中的数据进行分箱的更好方法
- azure-sql-database - 检测到冲突 - 无法回退 - 违反主键约束 - 无法在对象中插入重复键