我创建了一个基于另一个视图和表的视图。我想添加一个新的类型为varchar的列。我尝试了以下方法,但是出现语法错误?由于我是SQL的新手,所以无法理解。
ALTER VIEW [dbo].[MyView]
ADD New_Col varchar(10) null
GO
我创建了一个基于另一个视图和表的视图。我想添加一个新的类型为varchar的列。我尝试了以下方法,但是出现语法错误?由于我是SQL的新手,所以无法理解。
ALTER VIEW [dbo].[MyView]
ADD New_Col varchar(10) null
GO
你需要重新编写整个视图,只添加或省略你要更改的内容。
例如,现在你的视图是:
create view myView as
select field1
from table1
如果你现在想要添加一个名为 New_Col
的字段,那么你需要编写如下代码:
alter view myView as
select field1,
New_Col
from table1
select *
,这只是一种糟糕的做法。尤其是在视图中更是如此! - GuidoG您无法像更改表格一样更改视图。您需要将视图脚本为Alter,然后更改生成视图的select语句。
你不能使用 ALTER VIEW 语句更改视图的 SELECT 语句。 相反,你必须删除并重新创建该视图。
alter view
,但不像表格那样。请参考我的答案。 - GuidoGif not exists(select * from sys.columns where (name='columnToBeAdd') and object_id=object_id('YourViewName'))
begin
Declare @ViewDefinition varchar(max)
select @ViewDefinition=definition from sys.objects o join sys.sql_modules m on m.object_id=o.object_id
where o.object_id=object_id('YourViewName')
and o.type ='V'
select
@ViewDefinition=REPLACE( replace(@ViewDefinition,'CREATE ','Alter '),' Create ' ,' Alter ' )
Select @ViewDefinition=REPLACE( @ViewDefinition, 'From ',', YourTableName.columnToBeAdd + CHAR(13) + ' From ' )
exec( @ViewDefinition)
end