关于SQL事务的问题

xxingmen 2010-04-19 08:18:06
我需要同时执行两个命令,如果一起执行成功则提交,任何一个没完成就全部回滚

1、delete db1 where id='1'

2、update accdb set amount=amount+'1'

要用什么方法呢, 就用ExecuteNonQuery();执行,还是用存储过程执行好,代码应该如何实现
对事务不太清楚, 请高手们指教下。
...全文
58 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlecc2009 2010-04-20
  • 打赏
  • 举报
回复
存储过程中:
begin transaction

try{
...//你的代码
...
commit()提交//
}
catch
{
rollback()//回滚
}
end trasaction

大概这样吧,具体语法参照书本
sxiaohui8709253 2010-04-20
  • 打赏
  • 举报
回复
在存储过程里头
begin tran
delete db1 where id='1'
update accdb set amount=amount+'1'
if @@error<>0
begin
rollback tran
end
else
begin
commit tran
end
libinlink 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zsuswy 的回复:]
如下:

begin Tran
delete db1 where id='1'
update accdb set amount=amount+'1'
commit Tran


如果中间有一个执行不成功,两个都会回滚。
[/Quote]
这样写应该不对,误解他人啊
xxingmen 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sp1234 的回复:]

找一本数据库原理的正规教材,需要只学代码,学原理。
[/Quote]

不要只学代码,学原理, 很经典的话,谢谢
  • 打赏
  • 举报
回复
找一本数据库原理的正规教材,需要只学代码,学原理。
wuyq11 2010-04-19
  • 打赏
  • 举报
回复
using (TransactionScope ts= new TransactionScope())
{
Test1();
Test2();
ts.Complete();
}

SqlTransaction tran=transaction对象;
try
{
}
catch(Exception ex)
{
tran.Rollback();
}
finally
{
}
xxingmen 2010-04-19
  • 打赏
  • 举报
回复
我放在数据存储过程中执行过, 不过del没删掉东西,update也没成功,也没提示出错, 查了id确实都存在的
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
在Sql Server的客户端的查询分析器里面你也可以试下效果。
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
这个代码放到存储过程 或者Sql 语句里面都可以
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
如下:

begin Tran
delete db1 where id='1'
update accdb set amount=amount+'1'
commit Tran


如果中间有一个执行不成功,两个都会回滚。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧