说我正在运行一个查询
begin tran
update users
set name = 'Jimmy'
where name = 'john'
Run Code Online (Sandbox Code Playgroud)
如果我不回滚事务,是否仍会进行这些更改,它会抛出错误还是会作为回滚?
Kin*_*hah 16
您必须了解事务是什么——它是一个单一的工作单元。它是 ALL 或 NOTHING(遵循ACID 属性),这保证了数据库的一致性。
如果我不回滚事务,是否还会进行这些更改
只有在您提交时才会进行更改。SQL Server 会将所有更改记录到事务日志中,一旦您提交,它们就会被固化到数据文件中。
如果你不提交,那么您的交易将继续开放下去-你可以在看到sys.dm_tran_active_transactions / sys.dm_tran_database_transactions / sys.dm_tran_session_transactions
或使用DBCC OPENTRAN
。
此外,您启动的是一个显式事务,它应该以 COMMIT 或 ROLLBACK 语句显式结束。
另请阅读 -总是创建交易是一种不好的做法吗?
Jus*_*ave 12
如果您既不提交也不回滚事务,则事务将无限期地继续存在。它将继续保持锁定,可能会阻塞其他会话,直到您通过 acommit
或 a结束事务rollback
或直到 DBA 出现并终止会话(或直到诸如网络打嗝之类的事情导致连接失败)。如果 DBA 终止会话,他们将隐式地为此事务和任何其他打开的事务发出回滚。
归档时间: |
|
查看次数: |
6258 次 |
最近记录: |