SQL约束多个表

时间:2017-02-22 10:50:57

标签: sql sql-server triggers constraints

在我的数据库中,我有两张桌子。 第一个表格包含商店开业的日期。 第二个表包含客户进入商店的日期。

我需要一个约束来确保客户在商店开业后始终进入商店。 我怎样才能实现这种约束 触发/约束/存储过程?

1 个答案:

答案 0 :(得分:1)

如果您乐意稍微更改表的结构,则可以使用数据库系统强制执行的约束。您可以在商店表中添加一个附加键,其中包括现有键的列+商店开放日期。

然后将商店开放日期作为额外列添加到客户表中,然后替换现有外键或添加引用上述新密钥的新外键,以便您知道商店开放日期存储在这张桌子忠实地反映了商店中的实际价值。

然后,简单的检查约束可以比较customer表中的两个列值。

如果您希望隐藏现有/外部代码中此额外列的存在,则重命名客户表,然后在没有商店开放日期的情况下生成客户视图。您需要的只是INSTEAD OF INSERT触发器,用于在插入新客户时填充商店开放日期。

(如果您确实选择保持现有结构与当前结构完全相同,请记住在customers表中需要至少触发器进行插入和更新触发商店表中的更新,以便在以后更改商店开放日期时,您不会得到无效数据)