SQL SERVER 事务的使用(tran)

sql server事务的使用是为了确保数据的一致性。

通常写法

begin tran
--sql 语句1
--sql 语句2
--sql 语句3
commit tran

上面写法存在隐患,当操作(增删改)是由null引发的错误时,事务会跳过错误继续执行正常的语句。例如:

--创建表Student
create table Student(Name nvarchar(20) not null)
--建立事务
begin tran
inserted into Student(Name) values (null)
inserted into Student(Name) values ('小札')
inserted into Student(Name) values (null)
commit tran
--由null引发的错误,insert,delete,update都会跳过错误继续执行

上面结果会多一条数据为“小札”。为了避免了这样的问题:

有三种方法:其中@@error,@@trancount是全局变量,只要发生错误,@@error不等于0,只要执行一次事务,@@trancount就+1,回滚会变为0。

【方法一】:xact_abort on/off  on:开启,事务一旦出问题,全部回滚  off:关闭,不检查事务是否发生错误。

set xact_abort on
begin tran
--sql语句1
--sql语句2
--sql语句3
commit

【方法二】:每条操作语句后面判断是否回滚。

begin tran
--sql语句1
if @@error<>0
 begin
   rollback tran
   return --这里除了return跳出,也可以使用goto+标签跳出事务
 end
--sql语句2
if @@error<>0
 begin
   rollback tran
   return
 end
commit tran

【方法三】:try  catch

begin tran
 begin try
    --sql语句1
    --sql语句2
    --sql语句3
 end try
 begin catch
    if @@trancount>0
        rollback tran
 end catch
 if @@trancount>0
    commit tran

 

转载于:https://www.cnblogs.com/itsone/p/10273317.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"SQL Server中的BEGIN TRAN是一个事务控制语句,它用于开始一个事务事务是一组SQL语句的逻辑单元,被作为一个整体进行提交或回滚。BEGIN TRAN命令指示SQL Server开始一个事务,并在后续的SQL语句中标识这个事务。 当我们在数据库中执行一系列操作时(例如插入、更新和删除数据),我们可能需要确保这些操作要么都执行成功,要么都不执行。这就是事务的用途之一。事务在以下情况下非常有用: - 当所执行的操作是相关联的,一个操作的成功与否可能会影响到其他操作。 - 当需要确保一组操作要么全部成功,要么全部失败,以维护数据的一致性。 BEGIN TRAN语句用于显式地开始一个事务。在BEGIN TRAN之后的SQL语句将被视为一个事务的一部分。在BEGIN TRAN和COMMIT或ROLLBACK之间的SQL语句将作为一个原子操作执行。如果在事务开始之后的任何地方发生了错误,我们可以使用ROLLBACK命令回滚事务,撤销之前的所有操作。如果我们希望提交事务,即使发生错误,我们可以使用COMMIT命令。 事务使用可以保证数据的完整性和一致性。它提供了一种机制来管理数据库操作的执行顺序和结果,使得数据库的操作更加可靠和可靠。 总结一下,BEGIN TRANSQL Server中是一个开始事务的命令,它用于将一组相关的SQL语句包装在一个事务中。这样可以确保一组操作的一致性和完整性,并提供了回滚或提交事务的机制,以满足数据库操作的要求。"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值