【问题标题】:Set Foreign Key with Table用表设置外键
【发布时间】:2012-01-25 18:21:37
【问题描述】:

您好,我是编程和数据库工作的新手。我对外键有疑问。

我在 sql server 2008 中有两个表。CallDetails,PageDetails。

例如 页面详细信息表。

    PageId PageLoadTime PageUnloadTime
       1      12:00PM         1:00PM
       2      1:00PM          2:00PM
       3      2:00PM          3:00PM

通话明细表

    CallId CallStartTime CallEndTime
      1       12:05PM       12:10PM
      2       12:15PM       12:25PM
      3       02:35PM       02:40PM

现在我想在 CallDetaiuls 表中再添加一个 Cloumn 作为 PageId,其中 CallId 时间应该在 PageDetails 持续时间之间。比如,CallId 1 有 PageId 1 ,CallId 2 有 PageId 1 ,CallId3 有 PageId 3 。

我知道我可以通过为 CallDetails 表提供外键来做到这一点,但是我怎样才能提供上述分配外键的条件????

【问题讨论】:

    标签: sql-server-2008


    【解决方案1】:

    外键仅强制 CallDetails 中的 PageId 列中的值必须出现在 PageDetails 表中。对于所有其他逻辑,您可以使用例如:

    *CHECK CONSTRAINTS(在你的情况下没用) http://msdn.microsoft.com/en-us/library/ms188258.aspx

    *DML TRIGGERS(用于更复杂的逻辑,与另一个表中的数据进行比较等) http://msdn.microsoft.com/en-us/library/ms189799.aspx *您自己的应用程序逻辑。

    在这种情况下,我会使用触发器。如果你有一个,应用程序端的另一个逻辑。

    【讨论】:

    • 谢谢你,我得到了答案我在插入语句中实现了我的 where 条件......它的工作和获得正确的 pageID。但我仍在寻找好的答案,所以你的链接会对我有帮助,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多