Cha*_*bel 100 sql-server transactions commit
假设我有一个查询:
begin tran
-- some other sql code
Run Code Online (Sandbox Code Playgroud)
然后我忘了提交或回滚.
如果另一个客户端尝试执行查询,会发生什么?
mar*_*c_s 136
只要你没有COMMIT或ROLLBACK事务,它仍然"正在运行"并可能持有锁.
如果您的客户端(应用程序或用户)关闭数据库的连接,则任何仍在运行的事务将被回滚并终止.
gjv*_*amp 35
你可以自己尝试一下,这可以帮助你了解它是如何工作的.
在管理工作室中打开两个窗口(选项卡),每个窗口都有自己与sql的连接.
现在你可以在一个窗口中开始一个事务,做一些像插入/更新/删除但尚未提交的东西.然后在另一个窗口中,您可以看到数据库在事务外部的外观.根据隔离级别,表可能会被锁定,直到第一个窗口被提交,或者您可能(不)看到其他事务到目前为止所执行的操作等.
玩弄不同的隔离级别,没有锁定提示,看看它们如何影响结果.
另请参阅在事务中抛出错误时会发生什么.
理解所有这些东西是如何工作的,或者你会被sql所做的事情困扰,很多时候,这一点非常重要.
玩得开心!GJ.
| 归档时间: |
|
| 查看次数: |
122998 次 |
| 最近记录: |