3

ビューを作成するときに次のエラーが発生します:「ビューをスキーマバインドできません'dbo.viewStock'。'dbo.GetStockCurrentQuantityByProduct'はスキーマバインドされていません。」

背景:私が実際に達成したいのは、商品ID/現在の在庫を取得するクエリの速度を向上させることです。現在の在庫は、特定の製品のユニットイン/ユニットアウトをカウントする関数('dbo.GetStockCurrentQuantityByProduct')によって計算されます。私は可能な解決策を模索しています-製品IDと現在の在庫を保持するためのインデックス付きビューを作成し、クエリの実行を高速化するためにそこから直接選択できるようにします。

    CREATE VIEW [dbo].[viewStock] with schemabinding
    as 
    SELECT P.ProductId, 
    dbo.GetStockCurrentQuantityByProduct(P.ProductId) AS Quantity 
    FROM dbo.Product 

これを実行すると、次のエラーが発生します。

    Cannot schema bind view 'dbo.viewStock'. 
'dbo.GetStockCurrentQuantityByProduct' is not schema bound.
4

1 に答える 1

1

ビューまたは関数でスキーマバインディングを使用する場合、呼び出されるすべてのビューまたは関数もスキーマバインディングを使用する必要があります。

スキーマバインディングを使用すると、ビューが破損した場合に、基になるテーブルと列を誤って変更することがなくなります。これはあなたのシナリオで役立つようです。

したがって、解決策はGetStockCurrentQuantityByProductを変更して、スキーマバインディングも使用するようにすることです。

CREATEFUNCTIONまたはALTERFUNCTIONのSCHEMABINDINGオプションを参照してください。

于 2010-11-10T10:59:18.200 に答える