計算列にインデックスを付ける必要があるため、失敗するインデックスを作成することを望んでいたビューがあります (これはエラー コード 2729 で失敗します。それは決定論的ではありません」。ビューを、インデックス付きテーブルを維持するトリガーまたはトリガーのセットに置き換えることができることを望んでいます。ビューは非常に単純です。
与えられたテーブル:
CREATE TABLE SourceData (
ItemId int NOT NULL,
KeyId int NOT NULL,
Value varchar(MAX) NULL
)
ビューを作成しました:
CREATE VIEW DateView WITH SCHEMABINDING
AS
SELECT CONVERT(DATETIME, Value) As KeyDate,
ItemId FROM dbo.SourceData WHERE KeyId=123
次に、ビューにインデックスを作成しようとします。
CREATE NONCLUSTERED INDEX IX_DateView ON dbo.DateView (
[KeyDate] ASC
)
INCLUDE ( [ItemId])
これは失敗します。
これまでトリガーを実際に使用したことはありませんが、トリガーを使用して、基になる SourceData テーブルへの変更を検出およびフィルター処理し、それらを新しいテーブルに適用して DateView を置き換えることができるはずだと理解しています