首页 > 解决方案 > SQL:为什么“CREATE VIEW”必须是查询批处理中的第一条语句?

问题描述

SQL Server 文档和在线多篇文章中,它说

CREATE VIEW 必须是查询批处理中的第一条语句。

有关于如何解决这个问题的解决方案,比如这篇文章,它只是说要执行以下操作:

IF(statement)
BEGIN 
        EXECUTE('CREATE VIEW ...')
END

但是,它没有解释为什么“CREATE VIEW”必须是查询批处理中的第一条语句的实际原因。有人可以解释一下原因吗?或者知道如何/在哪里可以找到这个答案?

标签: sql-server

解决方案


需要此能力的唯一正当理由是在检查对象是否存在时。这是 sql server 一直在努力解决的问题,因为它们缺乏像许多其他数据库一样创建或替换的能力。不幸的是,这就是它在 sql server 中的工作方式。

在 SQL Server 2016 中,他们引入了处理此问题的 Create Or Alter。

至于为什么没有早先介绍这个的原因,这将是一个无法真正回答的软件设计者的问题。


推荐阅读