我的观点如下:
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
表FK放到TestId列上的Test
视图中(为了参考完整性和OData的易用性)。
有没有办法做到这一点?
答案 0 :(得分:0)
外键无法应用于视图。从这个角度获取它:您不能将引用完整性应用于由SELECT
语句返回的结果,因为它们不是永久存储的,它们只是查询的非持久输出。
要管理参照完整性,请在永久存储数据时将外键或其他此类约束应用于数据 - 例如在表IsHighLevelTest
和IsLowLevelTest
中。或者将UNION
永久物的结果存储在表格中。还有更多方法。