【问题标题】:What's the point of BEGIN TRANSACTION; ... ROLLBACK;BEGIN TRANSACTION 的意义何在? ...回滚;
【发布时间】:2019-07-12 07:25:26
【问题描述】:

我了解事务会在发生错误时自动回滚。我从 Microsoft 阅读了有关 T-SQL 的内容,发现了以下语法:

BEGIN TRANSACTION;
    STATEMENT1;
    STATEMENT2;
    STATEMENT3;
ROLLBACK;

为什么?如果您无论如何都不打算做某事,那何必呢?
具体来说,我在这里找到了这个:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/rollback-transaction-transact-sql?view=sql-server-2017#examples
但在其他地方也是如此。

【问题讨论】:

  • 当你想尝试一些东西而不是在这个过程中破坏你的整个数据库时很有用。您可以启动事务,执行您的操作(更新、插入、删除),验证结果是否符合您的预期,然后回滚所有更改(并且可能稍后再试一次,在修复您的代码后 - 我从来没有完全正确地解决棘手的问题第一次)......

标签: sql sql-server transactions


【解决方案1】:

您看到的文档链接仅用于演示目的。它显示了当您开始事务时会发生什么,尝试插入一些行然后回滚。 然后执行另一个插入语句,读者应该了解事务回滚的工作原理(通过查看只有第二个插入完成且回滚的事务不影响数据的结果集)。

通常以您编写的方式回滚仅用于测试目的,例如在开发时。

【讨论】:

    【解决方案2】:

    这只是向您展示回滚功能的一段 sql。 它总是会回滚,而不仅仅是发生错误。

    通常您只会在出现错误时回滚,请参阅 SQL Server - transactions roll back on error?

    了解详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多