嗨,我是编程和数据库工作的新手。我对外键有疑问。
我在sql server 2008中有两个表.CallDetails,PageDetails。
例如 PageDetails表。
PageId PageLoadTime PageUnloadTime
1 12:00PM 1:00PM
2 1:00PM 2:00PM
3 2:00PM 3:00PM
CallDetails表
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表来实现这一点但是我如何给出上述条件来分配外键????
答案 0 :(得分:1)
外键仅强制CallDetails中的PageId列中的值必须出现在PageDetails表中。对于您可以使用的所有其他逻辑,例如:
*检查约束(在您的情况下无用) http://msdn.microsoft.com/en-us/library/ms188258.aspx
* DML TRIGGERS(对于更复杂的逻辑,与来自另一个表的数据进行比较等) http://msdn.microsoft.com/en-us/library/ms189799.aspx *你自己的应用逻辑。
在这种情况下,我会使用触发器。如果你在应用程序方面有另一个逻辑,也可以。