如何使用Alter在SQL-Server 2014中的现有View中添加新列

时间:2016-09-16 15:34:52

标签: sql sql-server view alter

我创建了一个基于另一个视图和一个表的视图。我想添加varchar类型的新列。我确实喜欢下面,但是语法错误? 我是SQL的新手,所以,无法理解

ALTER VIEW [dbo].[MyView]
ADD New_Col varchar(10) null 
GO

5 个答案:

答案 0 :(得分:13)

您必须再次编写整个视图,只需添加或省略您想要更改的内容

例如您的视图现在是:

create view myView as
  select field1
  from table1

现在你要添加一个名为New_Col的字段而不是你写的:

alter view myView as
  select field1,
         New_Col
  from table1

答案 1 :(得分:1)

您无法像桌子一样改变视图。您必须将视图编写为Alter脚本,然后更改生成视图的select语句。

答案 2 :(得分:1)

您不能使用ALTER VIEW语句更改视图的SELECT语句。 相反,您必须拖放并重新创建视图。

答案 3 :(得分:0)

您应该删除此视图,然后重新创建

DROP VIEW view_name;
CREATe VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

答案 4 :(得分:-1)

如果不存在(从sys.columns中选择*,其中(name ='columnToBeAdd')和object_id = object_id('YourViewName')) 开始 声明@ViewDefinition varchar(max) 从sys.objects中选择@ ViewDefinition = definition o在m.object_id = o.object_id上加入sys.sql_modules m 其中o.object_id = object_id('YourViewName') 和o.type ='V' 选择 @ ViewDefinition = REPLACE(replace(@ ViewDefinition,'CREATE','Alter'),'Create','Alter') 选择@ ViewDefinition = REPLACE(@ViewDefinition,'从',',YourTableName.columnToBeAdd + CHAR(13)+'从')

exec(@ViewDefinition) 结束