是否正确?回滚并提交
Posted
技术标签:
【中文标题】是否正确?回滚并提交【英文标题】:is it correct or no? ROLLEDBACK AND COMMIT 【发布时间】:2020-04-13 17:14:10 【问题描述】:关于 SQL 中的 COMMIT 语句和 ROLLBACK 语句
我知道 ROLLBACK 语句是 COMMIT 语句的逆语句。
如果我们说“COMMIT 语句是 ROLLBACK 语句的逆”
正确与否?如果不是请解释一下
谢谢你的帮助
【问题讨论】:
不,不一样。如果您回滚,则在您执行更多 DML 之前没有什么可提交的 两者都不是另一个的“逆”。一旦你做了一个提交,你就不能回滚。一旦你做了回滚,你就不能提交。你只能说一个与另一个相反 【参考方案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
【讨论】:
以上是关于是否正确?回滚并提交的主要内容,如果未能解决你的问题,请参考以下文章