修正一下自己
以前写存储过程少,对于事务的认识不深
以前总这样写:
begin tran
(语句insert、delete 、update之类的)
if @@error=0
begin
select '执行成功'
commit tran
end
else
begin
select '执行出错'
rollback tran
end
这是凭印象写的,后来发现大错特错会了、这样会酿成大错的
@@error是个全局变量,并不能保证整个存储过程的语句是否全执行成功了
其实应该这么写才对
declare @errorCount int--定义错误计数器
set @errorCount =0 --初始为0
begin tran
(语句insert、delete 、update之类的,在每句后面加上set @errorCount = @errorCount + @@error)
if @errorCount =0
begin
select '执行成功'
commit tran
end
else
begin
select '执行出错'
rollback tran
end
按道理来说只要是含有更新数据(insert delete update drop、、)的行为都应该使用事务处理,
无论是在sql或者程序中都要有这种意识,以保证语句块执行的安全性