仔细研究了下,发现sql server里面的explicit transaction(显示事务)还是有点复杂的.以下是有些总结: Commit transaction 会提交所有嵌套的transaction修改.但是如果嵌套的transaction里面有rollback tran to save point, 那么save point之后的部分会revert掉. delete from dbo.numbertable begin tran out1 ) ) begin tran inn1 ) )
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Commit or Rollback transaction in finally block In most of JDBC books, the transaction management idiom that is followed is, after executing the update s
理解这一句话: 一个begin tran会增加一个事务计数器,要有相同数量的commit与之对应,而rollback可以回滚全部计数器 这个错误一般是出现在嵌套事务中. 测试环境 sql 2008 例如: begin transaction t1 --这里是逻辑处理 begin transaction t2 --建立一个事务点 save transaction point2 --这里是逻辑处理 --这里报错了,需要回滚事务 if @@error<>0 begin goto roll2 end
--创建存储过程 create procedure qiantaoProc @asd nchar(10) as begin begin try begin transaction innerTrans save transaction savepoint --创建事务保存点 insert into shiwu (asd) values (@asd); commit transaction innerTrans end try begin catch rollback transaction sa
开始保存时不能提交数据报错: org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread 然后加@Transactional 注解,保存数据不成功,被回滚了,日志: org.springframework.test.context.transaction.TransactionContext - Rolled back transaction for