SqlServer2008实例17事务控制之使用显式事务

1.如何使用显式事务根据一组语句返回的错误来提交或者回滚数据修改:

USE AdventureWorks
go

--之前的数量
SELECT COUNT(*) BeforeCount FROM HumanResources.Department

--用于保存最新错误整数值的变量
DECLARE @Error int
--开始一个显式事务

BEGIN TRANSACTION
	INSERT HumanResources.Department
		(Name,GroupName)
	VALUES
		('Accounts Payable','Accounting')
	SET @Error=@@ERROR
	IF (@ERROR<>0) GOTO Error_Handler

	INSERT HumanResources.Department
		(Name,GroupName)
	VALUES
		('Engineering','Research and Development')
	
	SET @Error=@@ERROR
	IF(@Error<>0) GOTO Error_Handler
	
COMMIT TRAN

Error_Handler:
IF @Error<>0
BEGIN
	ROLLBACK TRANSACTION
END

--之后的数量
SELECT COUNT(*) AffterCount FROM HumanResources.Department
	


   在T-SQL代码或者应用程序中处理事务的思想和建议。

  • 1.对要做的业务处理,事务操作的时间要尽可能短。保持事务打开会让资源在很长一段时间内  处于锁定状态,这样会阻塞其他用户进行操作或读取数据。
  • 2.最小化由事务锁定的资源。例如,只更新与要做的事务有关的表。如果数据修改在逻辑上相互依赖,则它们应该属于同一个事务,否则,不相关的更新应该在它们自己的事务中.
  • 3.只向事务添加相关的T-SQL操作。不要向某个事务添加与它关系不大的额外的查找或更新。在事务中执行SELECT语句会在关联表上加锁,这样会导致其他用户/会话不能执行操作或读取数据。
  • 4.不要打开需要在事务内等待用户或外部反馈的新事务。打开事务会让资源处于加锁状态,用户的反馈可能会需要不确定的一段时间来接收。因此,应该在发出显式事务之前先收集用户 的反馈。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值