3

我已经搜索了我的问题的解决方案,这个问题完美地描述了它

假设我有一个名为 ProjectTimeSpan 的表(我没有,只是作为示例!)包含列 StartDate 和 EndDate。

而且我还有另一个名为 SubProjectTimeSpan 的表,其中还包含名为 StartDate 和 EndDate 的列,我想在其中设置一个 Check 约束,使其无法将 StartDate 和 EndDate 设置为 ProjectTimeSpan.StartDate 到 ProjectTimeSpan.EndDate 之外的值

一种知道其他表值的检查约束......这可能吗?

但是我很难实现oracle的解决方案。当其他文章指出检查约束不能与其他表相关时,我更加困惑。

4

1 回答 1

2

不,它不能。

约束可以FOREIGN KEY(并且必须)与另一个表相关,但它只能执行等式检查。

即,您可以测试一列(或一组列)是否等于其他表中的列,但不能测试更复杂的条件(例如在跨度内或其他任何情况下)。

您必须为此实施触发器。

于 2013-04-16T19:36:16.340 回答