C#根据条件回滚事务

mirrorspace 2015-04-19 08:57:35
有个需求
A 表中的某一组人的年龄之合加起来不能超过300,人数在10-15之间.
table a
order age name
1 25
2. 30
....
n xx

现在有个想法是这样
1行 dba.BeginTransaction();// 开始事务
2行 dba.ExecuteNoQuery(insert into a(age,name,team) value(20,xxx,team1);// 插入一条人员记录

3行 int sum=dba.ExecuteNoQuery("select sum([age]) FROM a group by team1")// 计算该组人员之合

4行 dba.CommitTransaction();// 提交事务

5行 if(sum>300)
6行 dba.Transaction.Rollback();// 如果大于300了,就回滚,(插入的那条无效)

// 当前的数据库采用了一个封装的库,我在外面是调不到第6行的事务对象的,
那么有什么办法能将"不超过300"的回滚条件传到给第4行的方法里,让它判断是否回滚?
...全文
373 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirrorspace 2015-04-21
  • 打赏
  • 举报
回复
引用 7 楼 genzhu_li 的回复:
不提交也可以查出数据的,自己可以测试下
哦.,如果不合要求,那不提交事务.然后直接关闭数据库吗,那样的话之前执行的SQL会不会有效?
Regean 2015-04-21
  • 打赏
  • 举报
回复
不提交也可以查出数据的,自己可以测试下
mirrorspace 2015-04-21
  • 打赏
  • 举报
回复
引用 5 楼 jjkk168 的回复:
[/quote] 提交了就没办法回滚了,回滚就是在提交前回滚的[/quote] 提交之前的那些查询语句是可以得到值的?我一直以为提交之前,这些语句都不会执行?
还想懒够 2015-04-21
  • 打赏
  • 举报
回复
引用 3 楼 mirror030 的回复:
这个可行吗,没有提交事务,怎么可以回滚呢 [quote=引用 2 楼 ghao0 的回复:] 1行 dba.BeginTransaction();// 开始事务 2行 dba.ExecuteNoQuery(insert into a(age,name,team) value(20,xxx,team1);// 插入一条人员记录 3行 int sum=dba.ExecuteNoQuery("select sum([age]) FROM a group by team1")// 计算该组人员之合 5行 if(sum>300) 6行 dba.Transaction.Rollback();// 如果大于300了,就回滚,(插入的那条无效) 4行 else dba.CommitTransaction();// 提交事务
[/quote] 提交了就没办法回滚了,回滚就是在提交前回滚的
mirrorspace 2015-04-21
  • 打赏
  • 举报
回复
自顶一
mirrorspace 2015-04-20
  • 打赏
  • 举报
回复
这个可行吗,没有提交事务,怎么可以回滚呢
引用 2 楼 ghao0 的回复:
1行 dba.BeginTransaction();// 开始事务 2行 dba.ExecuteNoQuery(insert into a(age,name,team) value(20,xxx,team1);// 插入一条人员记录 3行 int sum=dba.ExecuteNoQuery("select sum([age]) FROM a group by team1")// 计算该组人员之合 5行 if(sum>300) 6行 dba.Transaction.Rollback();// 如果大于300了,就回滚,(插入的那条无效) 4行 else dba.CommitTransaction();// 提交事务
ghao0 2015-04-20
  • 打赏
  • 举报
回复
1行 dba.BeginTransaction();// 开始事务 2行 dba.ExecuteNoQuery(insert into a(age,name,team) value(20,xxx,team1);// 插入一条人员记录 3行 int sum=dba.ExecuteNoQuery("select sum([age]) FROM a group by team1")// 计算该组人员之合 5行 if(sum>300) 6行 dba.Transaction.Rollback();// 如果大于300了,就回滚,(插入的那条无效) 4行 else dba.CommitTransaction();// 提交事务
devmiao 2015-04-19
  • 打赏
  • 举报
回复
http://zhidao.baidu.com/link?url=zbPjruwhHEbvjg8MMcd9igthHsP3TWbbqMa2jpz20FQiwj8n0NtPvawxVXAdsRcOHLGLFAEPSxuh4ksneQ8LfK

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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