2

我有一个看起来像这样的视图:

CREATE view   reference.Test WITH SCHEMABINDING  as

    SELECT        reference.HighlevelTestId as TestId, Name, IsActive,
                  cast(1 as bit) as IsHighLevelTest 
    FROM          reference.HighlevelTest

    UNION ALL

    SELECT        LowLevelTestId  as TestId, Name, IsActive, 
                  cast(0 as bit) as IsHighLevelTest  
    FROM          reference.LowLevelTest

GO

注意:HighLevelTestId 和 LowLevelTestId 保证永远不会有相同的值(没有冲突)。

我有另一个看起来像这样的表:

CREATE TABLE [Reference].[TestAddition](
    [TestId] [BigInt] NOT NULL,
    [OtherStuff] [bit] NOT NULL,
    .... 
) 

我真的很想将我的TestAddition表添加到我Test对 TestId 列的视图中(为了参照完整性和 OData 的易用性)。

有没有办法做到这一点?

4

1 回答 1

0

外键不能应用于视图。从这个角度来看:您不能将引用完整性应用于仅由SELECT语句返回的结果,因为它们不是永久存储的,它们只是查询的非持久输出。

要管理参照完整性,请在永久存储数据时将外键或其他此类约束应用于数据 - 在您的情况下,例如在表IsHighLevelTestIsLowLevelTest. 或者UNION通过将其存储在表格中来制作您的永久结果。还有更多的方法。

于 2013-08-16T20:33:07.330 回答