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,
    .... 
) 

TestAdditionTestId 列のビューにテーブルを FK したいと本当に思っていTestます (参照整合性と OData の使いやすさのため)。

それを行う方法はありますか?

4

1 に答える 1

0

ビューに外部キーを適用することはできません。この角度から理解してください。単にステートメントによって返された結果に参照整合性を適用することはできません。SELECTそれらは永続的に保存されず、クエリの非永続的な出力にすぎないためです。

参照整合性を管理するには、データを永続的に保存している間に、外部キーまたはその他の制約をデータに適用しIsHighLevelTestますIsLowLevelTest。または、UNIONそれをテーブルに保存して、パーマネントの結果を作成します。もっと方法があります。

于 2013-08-16T20:33:07.330 に答える