是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句?

2023-12-07

我想知道是否可以在一个事务内运行多个 DDL 语句。我对 SQL Server 特别感兴趣,尽管其他数据库(至少是 Oracle、PostgreSQL)的答案也可能很有趣。

我一直在为事务内创建的表执行一些“CREATE TABLE”和“CREATE VIEW”,似乎存在一些不一致,我想知道 DDL 是否不应在事务内完成...

我可能可以将 DDL 移到事务之外,但是 我想得到一些这方面的参考。到目前为止我发现了什么:

  • MSDN page Isolation Levels in the Database Engine tells clearly that there are restrictions on what DDL operations can be performed in an explicit transaction that is running under snapshot isolation - but I'm not using snapshot isolation and this should result as an error.
    • 这可以解释为DDL操作可以在不同隔离级别下的显式事务中执行吗?
  • Oracle® Database Gateway for SQL Server 用户指南#DDL 语句指出给定事务中只能执行一条 DDL 语句- 这对于直接使用的 SQL Server 也有效吗?

对于甲骨文:

  • 在SO问题内对事务中需要的 DDL 语句进行单元测试据说Oracle会隐式提交DDL语句? (尽管没有参考文献)

如果有什么重要的事情,我会通过 JTDS JDBC 驱动程序使用 Java 来完成此操作。

br.灯子


我知道大多数数据库都有限制,但 Postgres 没有。您可以在事务中运行任意数量的表创建、列更改和索引更改,并且在 COMMIT 成功后,其他用户无法看到这些更改。数据库就应该是这样的! :-)

对于 SQL Server,您可以在事务内运行 DDL,但是SQL Server 没有版本元数据,因此在事务提交之前,其他人可以看到更改。但如果处于事务中,某些 DDL 语句可以回滚,但是对于哪些有效,哪些无效,您需要运行一些测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句? 的相关文章

随机推荐

  • HttpListener - 如何将 WebException HTTP 304“未修改”错误发送回浏览器?

    如果我使用 HttpListener 如何将 WebException 304 错误模拟回浏览器 也就是说 我收到了对 HttpListener 的请求 然后获得了 HttpListenerContext 那么从现在开始 我将如何模仿 安排
  • 与 JPA 的数据库独立字符串比较

    我正在使用 JPA Hibernate 作为提供者 和底层 MySQL 数据库 我有一张表 其中包含德国所有街道的名称 每个街道名称都有一个唯一的编号 对于一项任务 我必须找出姓名的编号 为此 我编写了一个 JPQL 查询 如下所示 SEL
  • 使用 R 绘图在 R 中绘制点图

    生成具有这样两个因素的点图的最佳方法是什么 最好使用标准 R 图 而不是 ggplot 并从 2x2 数据框生成 水平线应该是手段 我尝试过克利夫兰点图 但无法弄清楚如何获取两个数据系列并让点抖动 下面的代码应该可以解决这个问题 set s
  • 为 Firebase 云消息传递 PHP 生成 OAUTH 令牌

    我有一个 PHP 页面 我用它来向我开发的移动应用程序的用户发送通知 该页面直到上个月都工作正常 然后它给了我这个错误 multicast id 5174063503598899354 成功 0 失败 1 canonical ids 0 结
  • Kivy:已弃用功能的替代方案

    我正在尝试适应这个code但我仍然是第一步 因为我不理解大多数称为 like like 的功能可选数据项 Adapter 列表适配器 or 可选视图 当我在 kivy 网站上查找它们时 我发现它们被列为已弃用 我在 Kivy 网站上找不到这
  • 如何为每个商店对象提供自己的库存数组列表?

    发现这个很难 基本上我有三个类 Store 类 Stock 类 然后是 GUI 类 创建商店时 我希望它有自己的 arrayList 以便我可以向其中添加多个库存对象 通过 GUI 完成 我尝试只包含所需的基本代码 已删除 getter 方
  • 如何对元组数组进行排序?

    如何实现 或创建 元组列表的数组排序 以下内容是从我的代码中收集到的 本质上我创建了一个元组数组 并通过 for 循环填充它 之后我尝试对其进行排序 var myStringArray String Int nil myStringArra
  • 内置 python 函数的时间/空间复杂度

    split strip open 内置 python 函数 的时间 空间复杂度是多少 有谁知道我可以在哪里查找这些函数的时间 空间复杂度 确切的答案将取决于输入到函数中的属性 最简单的找出方法可能是检查这些函数的源代码 python 源代码
  • 如何使用 ffmpeg 在大型复杂过滤器上 concat 之前应用 1:1 SAR

    我使用 ffmpeg 以类似于以下的方式连接视频 我的输入遇到了一个奇怪的错误 Parsed concat 0 000000002a05bb80 Input link in10 v0 parameters size 1280x720 SAR
  • 如何在 Python 中使用 K-Means 聚类找到最佳聚类数

    我是聚类算法的新手 我有一个电影数据集 包含 200 多部电影和 100 多个用户 所有用户都至少评价了一部电影 值 1 表示好 0 表示坏 如果注释者别无选择 则值为空白 我想根据相似的用户的评论对他们进行聚类 这样的想法是 将相似电影评
  • 如何将客户端属性添加到 FirebaseListObservable 中的项目?

    我正在构建一个由 Firebase 数据库结构支持的简单聊天应用程序 messages KTjL oLrKOboa2su2zk name puf text Look I m smiling KTjNfaNem752ChFBcnC name
  • 如何动态更改log4j日志文件?

    我想要一个 log4j 配置 使得日志文件名应类似于 System name log log 也就是说 如果应用程序在任何系统上启动 则无需更改配置文件或代码 它应该生成如上所述的日志文件名 谢谢 我这样做 1 通过以下方式初始化记录器 S
  • 如何在页面加载时使用 ajax 将 php include 加载到页面中

    我有一个 php include 需要一段时间才能加载 因为 PHP 必须获取大量数据 我不想减慢整个网页加载等待此包含的速度 那么如何使用 ajax 加载此包含 我不希望通过单击按钮来触发ajax 我只是希望它在页面加载时加载包含内容 这
  • 图像在旋转时会改变大小。我该如何阻止这个?

    我正在为 Android 制作游戏 我需要旋转图像 当我旋转它时 它的尺寸显然会发生变化 例如 当它旋转 45 度时 它是正方形 但我希望它适用于任何矩形 因此它是一个更通用的解决方案 它的宽度和高度变成对角线的长度 比原来的长 经过一些代
  • 如何使用MacWire(播放框架)将依赖项注入到服务中

    我有一个服务类 该服务有一种方法getSomethingFromApi 现在 我想要有 play 配置实例 以便我可以从 application conf 中提取内容 并有一个 play WSClient 以便我可以执行 http 调用 这
  • 在Python中组合with语句和for循环

    考虑以下 python 代码 它使用上下文管理器来获取和释放资源 from contextlib import contextmanager contextmanager def res i print f Opening resource
  • Git 无法在 Linux 上使用 LF 检出使用 CRLF 存储的文件

    我正在检查第三方项目 libjpeg https github com winlibs libjpeg在Linux上 这只是一个例子 实际上我在许多其他项目中也遇到了同样的问题 我有以下 Git 行结尾配置 我只配置了全局设置 设置为以 L
  • 检查用户是否使用 Tor 请求网站的现代方法是什么? (php)

    我尝试了很多方法 但所有方法都不适合我 我想它们已经过时了 事情已经改变了 也许有人可以告诉我挖掘的方向 我是一个名为的 PHP 库的作者TorUtils它提供了许多与 Tor 和中继相关的类 One of the classes it p
  • 在测试期间覆盖 DateTime.Now 的好方法是什么?

    我有一些 C 代码 它们依赖今天的日期来正确计算未来的事情 如果我在测试中使用今天的日期 我必须在测试中重复计算 这感觉不对 在测试中将日期设置为已知值以便我可以测试结果是否为已知值的最佳方法是什么 我的偏好是让使用时间的类实际上依赖于接口
  • 是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句?

    我想知道是否可以在一个事务内运行多个 DDL 语句 我对 SQL Server 特别感兴趣 尽管其他数据库 至少是 Oracle PostgreSQL 的答案也可能很有趣 我一直在为事务内创建的表执行一些 CREATE TABLE 和 CR