【发布时间】:2017-07-12 14:15:05
【问题描述】:
是否可以在创建视图时检查我从中选择的表是否确实存在?为了防止无效的对象名称'MyItems'或关键字VIEW附近的语法不正确。
-- ok this is super simplistic
-- but it is enough to illustrate the point
CREATE VIEW vw_MyView
AS
SELECT DISTINCT Id, Name, COUNT(CategoryId) OVER (PARTITION BY Id) AS Total
FROM MyItems
GO
我有一堆这些视图是作为批处理脚本的一部分创建的。在此示例中,如果 MyItems 不存在,则执行会中断整个批处理脚本。
所以,我想我会在每个 CREATE VIEW 语句前添加一堆检查,以确保表确实存在。
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[MyItems]') AND type IN (N'U'))
-- CREATE VIEW <snip></snip>
GO
但事实证明,CREATE VIEW 语句必须是查询批处理中的第一条语句。
回到我的问题,当 CREATE VIEW 因为从不存在的表中读取而无法完成时,是否有某种解决方法可以捕获?
我正在使用 MS SQL Server 2008 R2。
【问题讨论】:
标签: sql-server