sql server 2005 T-SQL ALTER VIEW (Transact-SQL)

修改先前创建的视图。其中包括索引视图。ALTER VIEW 不影响相关的存储过程或触发器,并且不会更改权限。有关 ALTER VIEW 语句中所用参数的详细信息,请参阅 CREATE VIEW (Transact-SQL)

主题链接图标 Transact-SQL 语法约定

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ] 
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]

<view_attribute> ::=
{
[ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     }
schema_name

视图所属架构的名称。

view_name

要更改的视图。

column

将成为指定视图的一部分的一个或多个列的名称(以逗号分隔)。

重要提示:
只有在 ALTER VIEW 执行前后列名称不变的情况下,列的权限才会保持不变。
注意:
在视图的各列中,列名的权限在 CREATE VIEW 或 ALTER VIEW 语句间均适用,与基础数据源无关。例如,如果在 CREATE VIEW 语句中授予对 SalesOrderID 列的权限,则 ALTER VIEW 语句可以重命名 SalesOrderID 列(例如,重命名为 OrderRef),并且 仍然具有与使用 SalesOrderID 的视图关联的权限。
ENCRYPTION

加密 sys.syscomments 中包含 ALTER VIEW 语句文本的项。WITH ENCRYPTION 可防止视图作为 SQL Server 复制的一部分进行发布。

SCHEMABINDING

将视图绑定到基础表的架构。如果指定了 SCHEMABINDING,则不能以可影响视图定义的方式来修改基表。必须首先修改或删除视图定义本身,然后才能删除要修改的表的相关性。使用 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (schema.object)。所有被引用对象都必须在同一个数据库内。

不能删除参与使用 SCHEMABINDING 子句创建的视图的表或视图,除非该视图已被删除或更改,而不再具有架构绑定。否则,Microsoft SQL Server 2005 数据库引擎 将引发错误。另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响视图定义,则这些语句将会失败。

如果视图包含别名数据类型列,则无法指定 SCHEMABINDING。

VIEW_METADATA

指定为引用视图的查询请求浏览模式的元数据时,SQL Server 实例将向 DB-Library、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不返回基表的元数据信息。浏览模式的元数据是数据库引擎实例返回到客户端 DB-Library、ODBC 和 OLE DB API 的额外元数据。如果使用此元数据,客户端 API 将可以实现可更新客户端游标。浏览模式的元数据包含结果集中的列所属的基表的相关信息。

对于使用 VIEW_METADATA 创建的视图,浏览模式的元数据在描述结果集内视图中的列时,将返回视图名,而不返回基表名。

使用 WITH VIEW_METADATA 创建视图时,如果该视图具有 INSERT 或 UPDATE INSTEAD OF 触发器,则视图的所有列(timestamp 除外)都可更新。有关详细信息,请参阅 CREATE VIEW (Transact-SQL) 中的“备注”部分。

AS

视图要执行的操作。

select_statement

定义视图的 SELECT 语句。

WITH CHECK OPTION

要求对该视图执行的所有数据修改语句都必须符合 select_statement 中所设置的条件。

有关 ALTER VIEW 的详细信息,请参阅 CREATE VIEW (Transact-SQL) 中的“备注”部分。

注意:
如果原来的视图定义是使用 WITH ENCRYPTION 或 CHECK OPTION 创建的,则只有在 ALTER VIEW 中也包含这些选项时,才会启用这些选项。

如果当前所用的视图使用 ALTER VIEW 来修改,则数据库引擎使用对该视图的排他架构锁。在授予锁时,如果该视图没有活动用户,则数据库引擎将从过程缓存中删除该视图的所有副本。引用该视图的现有计划将继续保留在缓存中,但一旦被调用就会重新编译。

ALTER VIEW 可应用于索引视图;但是,ALTER VIEW 会无条件地删除视图的所有索引。

若要执行 ALTER VIEW,至少需要具有对 OBJECT 的 ALTER 权限。

以下示例创建一个包含所有雇员及其雇佣日期(称为 EmployeeHireDate)的视图。为该视图授予权限,但是要求更改为选择雇佣日期在某个日期之前的雇员。然后,使用 ALTER VIEW 替换该视图。

USE AdventureWorks ;
GO
CREATE VIEW EmployeeeHireDate
AS
SELECT c.FirstName, c.LastName, e.HireDate
FROM HumanResources.Employee e JOIN Person.Contact c
ON e.ContactID = c.ContactID ;
GO

必须将视图更改为只包括在 1997 年之前雇佣的雇员。如果未使用 ALTER VIEW,而是删除并重新创建视图,则必须重新输入先前用来处理与视图有关的权限的 GRANT 语句和任何其他语句。

ALTER VIEW EmployeeeHireDate
AS
SELECT c.FirstName, c.LastName, e.HireDate
FROM HumanResources.Employee e JOIN Person.Contact c
ON E.ContactID = C.ContactID
WHERE HireDate < '1/1/1997' ;
GO
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值