SQL语句如何修改]视图

xscansou 2007-12-16 11:33:19
SQL语句如何修改]视图
...全文
8119 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
arrow_gx 2007-12-18
  • 打赏
  • 举报
回复
sp_helptext 视图--------- 查看视图名
---------修改视图
alter view 视图
as
..........


楼上正解
中国风 2007-12-17
  • 打赏
  • 举报
回复
sp_helptext 视图--------- 查看视图名
---------修改视图
alter view 视图
as
............
------------------------------
dawugui 2007-12-16
  • 打赏
  • 举报
回复
ALTER VIEW
更改一个先前创建的视图(用 CREATE VIEW 创建),包括索引视图,但不影响相关的存储过程或触发器,也不更改权限。有关 ALTER VIEW 语句中所用参数的更多信息,请参见 CREATE VIEW。

语法
ALTER VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]

< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }

参数
view_name

是要更改的视图。

column

是一列或多列的名称,用逗号分开,将成为给定视图的一部分。



重要 只有在 ALTER VIEW 执行前后列名称不变的情况下,列上的权限才会保持不变。




说明 在视图的各列中,列名的权限在 CREATE VIEW 或 ALTER VIEW 语句间均适用,与基础数据源无关。例如,如果授予了 CREATE VIEW 语句中 title_id 列上的权限,那么 ALTER VIEW 语句可以将 title_id 列改名(例如改为 qty),但权限仍与使用 title_id 的视图上的权限相同。


n

是表示 column 可重复 n 次的占位符。

WITH ENCRYPTION

加密 syscomments 表中包含 ALTER VIEW 语句文本的条目。使用 WITH ENCRYPTION 可防止将视图作为 SQL Server 复制的一部分发布。

SCHEMABINDING

将视图绑定到架构上。指定 SCHEMABINDING 时,select_statement 必须包含由所引用的表、视图或用户定义函数组成的两部分名称 (owner.object)。

不能除去参与到用架构绑定子句创建的视图中的视图或表,除非该视图已被除去或更改而不再具有架构绑定。否则,SQL Server 会产生错误。另外,对于参与具有架构绑定的视图的表,如果其上的 ALTER TABLE 语句影响了该视图的定义,则这些语句将会失败。

VIEW_METADATA

在为引用视图的查询请求浏览模式元数据时,指定 SQL Server 将向 DBLIB、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不是返回基表或表。浏览模式元数据是由 SQL Server 向客户端 DB-LIB、ODBC 和 OLE DB API 返回的附加元数据,它允许客户端 API 实现可更新的客户端游标。浏览模式元数据包含有关结果集内的列所属基表的信息。

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

当用 VIEW_METADATA 创建视图时,如果该视图具有 INSERT 或 UPDATE INSTEAD OF 触发器,则视图的所有列(timestamp 除外)都是可更新的。请参见 CREATE VIEW 中的"可更新视图"。

AS

是视图要执行的操作。

select_statement

是定义视图的 SELECT 语句。

WITH CHECK OPTION

强制视图上执行的所有数据修改语句都必须符合由定义视图的 select_statement 设置的准则。

注释
有关 ALTER VIEW 的更多信息,请参见 CREATE VIEW 中的注释。



说明 如果原来的视图定义是用 WITH ENCRYPTION 或 CHECK OPTION 创建的,那么只有在 ALTER VIEW 中也包含这些选项时,这些选项才有效。


如果使用 ALTER VIEW 更改当前正在使用的视图,Microsoft® SQL Server™ 将在该视图上放一个排它架构锁。当锁已授予,并且该视图没有活动用户时,SQL Server 将从过程缓存中删除该视图的所有复本。引用该视图的现有计划将继续保留在缓存中,但当唤醒调用时将重新编译。

ALTER VIEW 可应用于索引视图。然而,ALTER VIEW 将无条件地除去视图上的所有索引。

权限
ALTER VIEW 的权限默认地授予 db_owner 和 db_ddladmin 固定数据库角色的成员,以及视图所有者。这些权限是不可传递的。

若要更改视图,用户必须具有 ALTER VIEW 权限,并且对视图中引用的表、视图和表值函数具有 SELECT 权限,对视图中调用的标量值函数具有 EXECUTE 权限。

此外,用户若要更改视图 WITH SCHEMABINDING,则必须对每一个引用的表、视图和用户定义函数具有 REFERENCES 权限。

示例
A. 更改视图
下例创建称为 All_authors 的视图,该视图包含全部的作者。权限授予了视图,但需求改为从犹他州选择作者。于是,使用 ALTER VIEW 替换了该视图。

-- Create a view from the authors table that contains all authors.
CREATE VIEW All_authors (au_fname, au_lname, address, city, zip)
AS
SELECT au_fname, au_lname, address, city, zip
FROM pubs..authors
GO
-- Grant SELECT permissions on the view to public.
GRANT SELECT ON All_authors TO public
GO
-- The view needs to be changed to include all authors
-- from Utah.
-- If ALTER VIEW is not used but instead the view is dropped and
-- re-created, the above GRANT statement and any other statements
-- dealing with permissions that pertain to this view
-- must be re-entered.
ALTER VIEW All_authors (au_fname, au_lname, address, city, zip)
AS
SELECT au_fname, au_lname, address, city, zip
FROM pubs..authors
WHERE state = 'UT'
GO

B. 在视图中使用 @@ROWCOUNT 函数
下例使用 @@ROWCOUNT 函数作为视图定义的一部分。

USE pubs
GO
CREATE VIEW yourview
AS
SELECT title_id, title, mycount = @@ROWCOUNT, ytd_sales
FROM titles
GO
SELECT *
FROM yourview
GO
-- Here, the view is altered.
USE pubs
GO
ALTER VIEW yourview
AS
SELECT title, mycount = @@ ROWCOUNT, ytd_sales
FROM titles
WHERE type = 'mod_cook'
GO
SELECT *
FROM yourview
GO

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧