sql - 为什么 T-SQL 中的一批只能有一个 create 语句?
问题描述
这个设计决策背后的原因是什么?
解决方案
为什么 T-SQL 中的一批只能有一个 create 语句?
哪些语句可以在批处理中组合,哪些语句必须是批处理中的第一个语句,这些限制是 TSQL 解析器的技术限制。他们没有“好”的理由;随着语言在许多版本中的发展,平衡引入新语法的同时保持向后兼容性在语言中引入了一些类似这样的怪癖。在 CTE 之前用 ';' 终止语句的要求 是另一个类似的怪癖。
典型的解决方法是将 DDL 语句推送到嵌套批处理中。例如:
declare @sql1 nvarchar(max) = '
create schema foo;
'
declare @sql2 nvarchar(max) = '
create table foo.bar(id int);
'
exec (@sql1)
exec (@sql2)
推荐阅读
- javascript - 多次查询firestore文档
- java - 将 JSON 获取到 android 应用程序的问题,可能是 url 的问题
- swift - 我应该在 Swift NIO 中使用哪个事件循环?
- ios - 具有多行标签和图像视图的 UICollectionViewCell 布局中断布局
- python - Keras 模型以代码 -1073740791 (0xC0000409) 退出
- python - 简单的 python 作为 docker 容器运行
- laravel - 使用 laravel 刀片提取日、月、年和小时
- makefile - Makefile $(wildcard ... 扩展问题
- javascript - 扩展会话弹出母版页 ASP.Net
- solidity - TON-坚固。如何从编码到单元格中的数据中获取哈希值?tvm.hash 模拟?