玖叶教程网

前端编程开发入门

MySql学习笔记26——事务知识扩展(SQL Server中的事务)

原文链接:SQL Server中的事务(附有实例)_legendaryhaha的博客-CSDN博客_sql事务


在SQL Server中数据库分三种:

自动提交事务:这是 SQL Server 的默认模式,它将每条单独的 T-SQL 语句视为一个事务,如果成功执行,则自动提交;如果错误,则自动回滚。

显示事务:用BEGIN TRANSACTION明确指定事务的开始,这是最常用的事务类型。

隐性事务:通过设置SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开,下一个语句自动启动一个新事务(不需要BEGIN TRANSACTION),每个事务仍以COMMIT或ROLLBACK语句显式完成。再下一个 Transact-SQL 语句又将启动一个新事务。

通过SET IMPLICIT_TRANSACTIONS OFF把隐性事务模式关闭。 (隐形事务会占用大量资源,一般都不推荐使用)


T-SQL使用下列语句来管理事务:


开始事务:BEGIN TRANSACTION

提交事务:COMMIT TRANSACTION

回滚(撤销)事务:ROLLBACK TRANSACTION

存储点语句:SAVE TRANSACTION

所谓事务存储点就是在事务过程当中插入若干个标记,当事务执行中出现错误时,可以不撤销整个事务,只是撤销部分事务,将事务退回到某个事物存储点。一旦事务提交或回滚,则事务结束。

例如:

创建一个事务,把学号为00015的选修课程号003改为001、选修课程号004改为

006,以上两个操作任意一个操作失败,事务回滚,查看事务执行结果。

begin transaction t1_student

update sc

set CNo='001'

where SNo='00015' and CNo='003'

update sc

set CNo='006'

where SNo='00015' and CNo='004'

if @@ERROR!=0

rollback transaction

else

commit transaction t_student


创建一个事务,把学号为00015的的选修课程号003改为001、选修课程号004改为

006,第一个操作失败,事务回滚,成功则设定为保存点,第二个操作失败,则事务

回滚,查看事务执行结果

begin transaction t_student

update sc

set CNo='001'

where SNo='00015' and CNo='003'

if @@ERROR!=0

rollback transaction

save transaction t_student

update sc

set CNo='006'

where SNo='00015' and CNo='004'

if @@ERROR!=0

rollback transaction t_student

else

commit transaction t_student


启动隐式事务,更新成绩后更新课程号,然后关闭隐式事务

set implicit_transactions on use SM

UPDATE SC

SET Score=score+1

WHERE SNO='00001' AND CNO='001'

UPDATE SC

SET CNO='008'

WHERE SNO='00001' AND CNO='001'

commit transaction

set implicit_transactions off


版权声明:本文为CSDN博主「legendaryhaha」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/legendaryhaha/article/details/80550180

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言