日期:2014-05-16  浏览次数:20392 次

事务全会滚如何实现啊
begin transaction m1
insert into dept(id,name_dept) values(1,'部门1')
insert into dept(name_dept) values('部门2') -- id不能为空
insert into dept(id,name_dept) values(3,'部门3')
commit

我这样处理 貌似和普通sql处理方式没区别啊 只是将错误的进行提示 而没有进行回滚

------解决方案--------------------
commit改成rollback就回滚了,不过即使成功也回滚,所以加try/catch比较好
------解决方案--------------------
begin tran 
begin try 
insert into dept(id,name_dept) values(1,'部门1')insert into dept(name_dept) values('部门2') -- id不能为空
insert into dept(id,name_dept) values(3,'部门3')
commit
end try
begin catch
rollback
end catch

------解决方案--------------------


begin try
begin tran

insert into dept(id,name_dept) values(1,'部门1')
insert into dept(name_dept) values('部门2') -- id不能为空
insert into dept(id,name_dept) values(3,'部门3')

commit tran
end try
begin catch
 rollback tran 

 print 'Error Message: '+ERROR_MESSAGE()
 print ERROR_LINE()
 print Error_Number()
end catch

------解决方案--------------------
那你看用的什么语言了,C#语言是有事务的处理类,可以构建事务,批量向数据库插入数据,可以用try/catch捕捉异常进行回滚。
------解决方案--------------------
2000很多用法都不支持阿。。。
------解决方案--------------------

------解决方案--------------------
XACT_ABORT不会回滚自定义异常,抛自定义异常的时候最好有
IF @@Trancount>0
ROLLBACK TRANSACTION