我创建了一个基于另一个视图和一个表的视图。我想添加varchar类型的新列。我确实喜欢下面,但是语法错误? 我是SQL的新手,所以,无法理解
ALTER VIEW [dbo].[MyView]
ADD New_Col varchar(10) null
GO
答案 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) 结束