SQLServer2005的事务处理
??? SqlServer2005是微软推出的企业级数据库开发平台,它不同于以往的SqlServer2000,在功能上,2005有了更强大的表现。我们在此来研究一下2005的事务处理。 以下的代码是传统的2000的事务处理方法: create table demo ( ? sid int primary key, ? sname varchar(10) ) go
?
select * from demo /*传统的处理方式的不足*/ declare @error int set @error =? 0 begin tran ? insert? demo values(1,'Tom') ? set @error = @@error + @error ? insert? demo values(1,'Jack') ? set @error = @@error + @error if @error > 0 ? begin ???? print 'Error!' ???? rollback tran ? end 这段代码可以实现事务的原子性功能。但是使用起来不方便。比如,事务处理的操作如果很多的话,每行代码后都会执行? set @error = @@error + @error,用来接收全局错误变量的值。 2005中改变了这种操作,而是采用了开发语言的异常处理机制。具体代码见下: begin try ? begin tran ??? insert into tDemo values(2,'Jack') ??? insert into tDemo values(2,'Mary') ??? commit tran end try begin catch ? declare @i int ? set @i = @@error ? if(@i = 2627) ??? select error_number() as 错误号 ,error_message() as 错误信息 ? else ??? select '其他错误!' ? rollback tran end catch ??? 在上面代码中添加了两个块,try和catch,类似于开发语言中的try{},catch{}。当try块中数据出错时,回自动跳到catch块中接受异常处理,另外,还可以利用error_number()获取错误号和错误信息提示。 ?(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |