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

如果您在视图或函数中使用模式绑定,则所有调用的视图或函数也必须使用使用模式绑定。

Schemabinding 使您不会意外更改基础表和列,如果这会破坏视图。这在您的场景中似乎很有用。

因此,解决方案是修改 GetStockCurrentQuantityByProduct,使其也使用模式绑定。

请参阅CREATE FUNCTIONALTER FUNCTION的 SCHEMABINDING 选项

于 2010-11-10T10:59:18.200 回答