sql-server - SQL:为什么“CREATE VIEW”必须是查询批处理中的第一条语句?
问题描述
在SQL Server 文档和在线多篇文章中,它说
CREATE VIEW 必须是查询批处理中的第一条语句。
有关于如何解决这个问题的解决方案,比如这篇文章,它只是说要执行以下操作:
IF(statement)
BEGIN
EXECUTE('CREATE VIEW ...')
END
但是,它没有解释为什么“CREATE VIEW”必须是查询批处理中的第一条语句的实际原因。有人可以解释一下原因吗?或者知道如何/在哪里可以找到这个答案?
解决方案
需要此能力的唯一正当理由是在检查对象是否存在时。这是 sql server 一直在努力解决的问题,因为它们缺乏像许多其他数据库一样创建或替换的能力。不幸的是,这就是它在 sql server 中的工作方式。
在 SQL Server 2016 中,他们引入了处理此问题的 Create Or Alter。
至于为什么没有早先介绍这个的原因,这将是一个无法真正回答的软件设计者的问题。
推荐阅读
- python - Python 控制台在程序运行前关闭
- flutter - Flutter:检测多个小部件上的点击
- java - 如何在方法中流式传输 Java List (Varargs) 的值?
- c# - ASP.NET Core MVC,设置线程文化没有效果
- c# - ObservableCollection 和 INotifyPropertyChanged 的 WPF MVVM 问题
- android - 将 Parse 查询数据从辅助类返回到我的活动
- java - 在 GraphQL (Apollo) 中转换 InputType 对象
- laravel - Laravel:每个外键的唯一外键(user_id)
- c - 二进制插值搜索找不到我正在寻找的数字 (C)
- python - 如何解析“UTC+01:00”格式的时区