数据库 T-SQL 事务

  • 事务:同生共死
  • 指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)-也就是由多个SQL语句组成,必须座位一个整体执行
  • 这些SQL语句作为一个整体一起向系统提交,要么都执行,要么都不执行
  • 事务一旦开始只有一种结果
  • 语法步骤:
  1. 开始事务:BEGIN TRANSACTION
  2. 事务提交:COMMIT TRANSACTION
  3. 事务回滚:ROLLBACK TRANSATION
  • 判断某条语句执行是否出错:
  1. 全局变量@@ERROR
  2. @@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,需要对错误进行累计:
  3. 例:SET@ERRORSUM = @ERRORSUM+@@ERROR
  • SET IMPLICIT_TRANSACTION{ON|OFF}隐式事务

 

--事务
--1.打开一个事务

begin transaction
declare @sum int =0
	update Student set StuName = '王振宇' where StuID = '1651030201'
	set @sum = @sum + @@ERROR
	
	update Student set StuName = '刘浩' where StuID = '1651030202'
	set @sum = @sum + @@ERROR
	
	--只要有任何一条SQL语句执行出错,最后的@SUM就不是0
	
	if @sum<>0
	begin
		--表示程序执行出错了
		--回滚
		rollback
	end
	else 
	begin
		--如果没有出错,则提交该事务
		commit
	end
	
	--自动提交事务
	--当执行一条SQL语句的时候,数据库自动打开一个事务,当语句执行成功,
	--数据库自动提交事务,执行失败,数据库自动回滚事务
	
	--隐式事务,每次执行一条sql语句时,数据库自动帮我们打开一个事务
	--但是需要我们手动提交,或者回滚事务
	
	SET IMPLICIT_TRANSACTIONS { ON | OFF }隐式事务
	
	--打开隐式事务
	SET IMPLICIT_TRANSACTIONS ON
	
	SELECT * FROM Student
	COMMIT
	--不打开隐式事务
	SET IMPLICIT_TRANSACTIONS ON
	
	--显示事务:需要手动打开事务,手动提交或者回滚事务
	begin tran
	
	--………………
	
	
	commit tran
	
	
	
	
	select * from Student

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值