【问题标题】:is it correct or no? ROLLEDBACK AND COMMIT是否正确?回滚并提交
【发布时间】:2020-04-13 17:14:10
【问题描述】:

关于 SQL 中的 COMMIT 语句和 ROLLBACK 语句

我知道 ROLLBACK 语句是 COMMIT 语句的逆语句。

如果我们说“COMMIT 语句是 ROLLBACK 语句的逆”

正确与否?如果不是请解释一下

谢谢你的帮助

【问题讨论】:

  • 不,不一样。如果您回滚,则在您执行更多 DML 之前没有什么可提交的
  • 两者都不是另一个的“逆”。一旦你做了一个提交,你就不能回滚。一旦你做了回滚,你就不能提交。你只能说一个与另一个相反

标签: transactions commit rollback


【解决方案1】:

从 SQL Server 的角度来看,“反向”的使用可能会误导“嵌套”事务

COMMIT: 标记成功的隐式或显式事务的结束。

ROLLBACK: 将显式或隐式事务回滚到事务的开头,或事务内的保存点。

例子:

BEGIN TRAN
BEGIN TRAN
SELECT 'sth';
COMMIT;
SELECT @@TRANCOUNT;
-- 1

BEGIN TRAN
BEGIN TRAN
SELECT 'sth';
ROLLBACK;
SELECT @@TRANCOUNT;
-- 0 (nothing to commit)

db<>fiddle demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2012-07-10
    相关资源
    最近更新 更多