萌新刚接触SQL server,在直接手动修改SQL server数据库的数据时,有忘记加上where条件的情况,导致所有数据都被更新了,此时希望有回滚操作。查看大佬博客以及实际试验后,总结了一点笔记。
SQL server的显式与隐式事务模式:
sql server默认是显式事务模式,此模式需要手动执行 开始事务 语句,才可以执行 提交事务 或 回滚事务 语句;此模式下若未执行 开始事务 语句,则数据库会直接提交,无法回滚(此方式即为自动提交)。
在隐式事务模式下,不需要执行 开始事务 语句,所有的新增、修改和删除操作都默认是一个事务,可以进行提交和回滚。(注:此模式下,一个事务开始后,在其他查询窗口无法查询到该事务涉及的数据,需要提交或回滚后才能查询到)
开启隐式事务模式:set implicit_transactions on;
开启显式事务模式:set implicit_transactions off;
开始事务:begin transaction;
提交事务:commit transaction;
回滚事务:rollback transaction;
提交事务和回滚事务即表示着一个事务结束。
若有错误或遗漏,敬请指正。
参考博客:
SQL Server执行脚本后怎么回滚 - 夜空中奔跑的小孩
设置隐式事务与显式事务IMPLICIT_TRANSACTIONS - 桦仔
<hr>