如我有存储过程
A
begin tran
....
commit
---------------------
B
begin tran
....
commit然后我有事务oo.BeginTranction()
try
{
.... //执行一些更新
....//调用A存储过程
.....//调用B存储过程
}
catch
{
oo.Rollback
}
finally
{
oo.Dispose();
}如果上面的代码
当在执行B存储过程的时候出错
事务进行回滚
那么A存储过程中的已经提交的会不会回滚如果不会那要怎么办
谢谢
A
begin tran
....
commit
---------------------
B
begin tran
....
commit然后我有事务oo.BeginTranction()
try
{
.... //执行一些更新
....//调用A存储过程
.....//调用B存储过程
}
catch
{
oo.Rollback
}
finally
{
oo.Dispose();
}如果上面的代码
当在执行B存储过程的时候出错
事务进行回滚
那么A存储过程中的已经提交的会不会回滚如果不会那要怎么办
谢谢
解决方案 »
- 网站如何跟手机通信?请高手们给点实现思路
- ASP.NET程序w3wp.exe 进程占很高的CPU,如何测得在出现哪个页面?
- FCKeditor怎样控制上传图片的大小?
- Oracle临时表的问题?
- 分配公司股份时注意事项?
- 这样如何实现?
- GridView激发了未处理的事件“PageIndexChanging”。
- 请问那里有Crystal Enterprise Report Application Server V9.2下载?不胜感激
- asp.net 拖控件实现GridView分页删除编辑功能,如果出现了异常,我怎么捕获异常.!!!!!
- 如何在winform应用程序中实现邮件发送功能?
- 关于CheckBoxList无法选中的问题
- 在BoundField中使用FindControl如何查找ID?
BEGIN
DROP Procedure user_OffLineBank_FlowforMoneyRight
END
GOCREATE Procedure user_OffLineBank_FlowforMoneyRight
(
@id int
)
AS
declare @iErrorCode int
Select @iErrorCode = 0
declare @bill_id int
declare @bill_list varchar(20)
Select @bill_id=0
Select @bill_list = ''
Select
@bill_id = bill_id
from
user_OffLineBank_Flow
where
id=@id
Select @bill_list=bill_list from Bill_Orders Where ID=@bill_id
Begin TRANSACTION
if @iErrorCode = 0
Begin
Update
Ticket_Bookings
Set
PaymentStat='0002'
Where
ID=Convert(int,substring(@bill_list,4,7))
Select @iErrorCode = @@Error
End
If @iErrorCode = 0
Begin
Commit TRANSACTION
End
Else
Begin
ROLLBACK TRANSACTION
End
GO
就不用在存储过程A和B里面进行事务操作了或者你把A和B放到一个事务里面,类里面就不用写事务操作不过你这样写也没问题
事务失败后自动回滚
总结:也就是事务里多个Command/
你既然在类里面进行了事务操作
就不用在存储过程A和B里面进行事务操作了
或者你把A和B放到一个事务里面,类里面就不用写事务操作
----------------------------------
因为事务A,B是DB组做的
而如果我要调用这个方法还要把内容照着写在我事务的话
那么他们改了A,B存储过程,那我不是又要改
这样不符合逻辑谢谢
A
B
commit AB 任何一个执行不成功都会回滚