SQL事物回滚问题,大家帮小弟看看
CREATE PROCEDURE DBO.xxx
as
set nocount off
BEGIN TRANSACTION
update eit_Class set orders=520 where id=1
if @@error <> 0
begin
--raiserror( '抱歉,更新时发生错误,更新失败! '16,1)
ROLLBACK /*回滚,取消修改*/
return
end
insert into eit_Class(orders) values( 'a ')
if @@error <> 0
begin
--raiserror( '抱歉,更新时发生错误,更新失败! '16,1)
ROLLBACK /*回滚,取消修改*/
return
end
if exists(select 1 from eit_Class where id=1)
begin
update eit_Class set orders=111 where id=1
if @@error <> 0
begin
--raiserror( '抱歉,更新时发生错误,更新失败! '16,1)
ROLLBACK /*回滚,取消修改*/
return
end
end
else
begin
insert into eit_Class(orders) values(111)
if @@error <> 0
begin
-- raiserror( '抱歉,插入时发生错误,更新失败! '16,1)
ROLLBACK /*回滚,取消修改*/
return
end
end
COMMIT TRANSACTION /*提交事务,保持修改*/
GO
update eit_Class set orders=520 where id=1
以上这句没错 为什么不会写入库中? 我不要全部回滚
[解决办法]
你整存程中只有一begin tran和commit tran,且把commit放到了最後,那中任何一步出的候都回以上所有操作的
把每操作都分放到一事中就行了