【问题标题】:SQL constraint multiple tablesSQL约束多表
【发布时间】:2017-02-22 10:50:56
【问题描述】:

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

我需要一个约束来确保顾客总是在商店开张后进入商店。 我怎样才能实现这个约束 触发器/约束/存储过程?

【问题讨论】:

  • 添加触发器以在商店开业和人员进入时进行交叉引用。
  • SQL Server 是否支持带有检查选项的视图?可以在这里使用。

标签: sql sql-server triggers constraints


【解决方案1】:

如果您愿意稍微更改表的结构,您可以让数据库系统强制执行约束。您向 shop 表中添加了一个附加键,其中包括现有键的列 + 开店日期。

然后,您将开店日期作为额外列添加到客户表中,然后替换现有外键或添加引用上述新键的新外键,这样您就知道开店日期存储在该表忠实地反映了 shop 表中的实际值。

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

如果您希望从现有/外部代码中隐藏此额外列的存在,您可以重命名您的客户表,然后生成一个没有开店日期的客户视图。然后,您只需要一个 INSTEAD OF INSERT 触发器来在插入新客户时填充商店的营业日期。


(如果您确实选择将现有结构保持原样,请记住,您需要至少触发器用于在客户表中插入和更新和触发商店表中的更新,这样如果以后更改商店的营业日期,您就不会得到无效数据)

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2014-01-26
    • 2018-08-04
    相关资源
    最近更新 更多