视图中需要注意的几个问题

1.如果视图中有依赖对象,如果让视图能正常工作,那面所依赖的对象必须存在

例如

ALTER VIEW vProductCosts
AS
SELECT ProductID,ProductSubcategoryID,Name,ProductNumber,StandardCost
FROM Production.Product


CREATE VIEW vProductCosts2
AS
SELECT Name,StandardCost from vProductCosts


如果这时删除第一个

DROP VIEW vProductCosts


查询第二个

SELECT * FROM vProductCosts2

就会报错

可以利用可选指令SCHEMEBINDING,它会告诉SQL Server检查依赖关系,不允许任何破坏这些依赖关系的修改

CREATE VIEW vProductCosts WITH SCHEMABINDING
AS
SELECT ProductID,ProductSubcategoryID,Name,ProductNumber,StandardCost
FROM Production.Product
GO
CREATE VIEW vProductCosts2 WITH SCHEMABINDING
AS 
SELECT Name,StandardCost
FROM dbo.vProductCosts


上面的例子中存在一些明显的独特需求。

首先,对于要进行模式绑定的视图,它依赖的任何对象必须是模式绑定的。虽然表内置了对模式的绑定支持,但是视图需要显示地绑定模式

在引用对象之前,其依赖的任何对象必须存在于数据库。因此,必须在依赖的CREATE对象语句之间用批处理结束语句。这个例子使用GO语句作为创建第一个视图的终结。

在引用依赖的视图时,必须使用一个具有两部分的名字,必须使用模式名。对已进行模式绑定的视图将不能使用SELECT *语法,所有的列都必须被显示地引用。

2.行的排序

在使用视图设计器的时候,如果不指定TOP语句,视图设计器就不允许对视图中的行排序。

可以使用下面的方法

CREATE VIEW vOrderProductCosts

AS

SELECT TOP 100 PERCENT ProdcutID,Name,ProductNumber,StandardCost

FROM Production.Product

ORDER BY Name




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值