| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1723 人关注过本帖
标题:对SqlTransaction事务有点失望
取消只看楼主 加入收藏
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
结帖率:86.67%
收藏
已结贴  问题点数:0 回复次数:7 
对SqlTransaction事务有点失望
或者是我的使用不正确,为什么我的事务SqlTransaction总是出问题呢。
我的事务是用在同时删除两个表中的数据,在使用中大概也就是几个月的时间出现过两次
这样的情况,其中一个表删除多删除了一次,导致数据不一致了。
如:
表1                                表2
id       金额   关联字段           关联字段        金额
1       5000       101               101          2000
                                     101          1500
                                     101          1000
                                     101           500

表1.金额=sum(表2.金额)

现在表2 insert into数据时同时累计加到表1.金额字段我用的事务没有出现过问题,
同样我在删除表2.金额时也使用事务减少表1.金额字段的值。
但是有时就发现表1.金额的数据会出现负数,也就是多减少了一次

我是这样用事务的:
       Dim shiwu As SqlTransaction
        Dim cn As New SqlConnection(cnchuan)
        Dim cmd As New SqlCommand
        cmd.Connection = cn

        If cn.State = ConnectionState.Closed Then
            cn.Open()
        End If
        shiwu = cn.BeginTransaction '初始化事务对象
        cmd.Transaction = shiwu

        Try
             = "delete from "
            cmd.ExecuteNonQuery()
             = "delete from"
            cmd.ExecuteNonQuery()

            () '提交数据库事务
            Return True
        Catch ex As Exception
            shiwu.Rollback() '事务回滚
            Return False
        Finally
            cn.Close()
        End Try

请高手赐教!

搜索更多相关主题的帖子: 数据 
2011-07-02 15:37
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
首先感谢”不说也罢“的回复

我的表1和表2之间已经有一个update触发器了,但是是更新相关字段的内容。
我的update触发器建在了表1上,
但是我的删除操作是删除表2中一条记录(如表2.金额为500元),
同时减少表1.金额500元:表1.金额=表1.金额-500

您的意思是,我可以在表1上的update触发器上添加上一条删除的语句?
2011-07-02 16:48
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
我的几个问题都是”不说也罢“给解决的,非常感谢,如果方便的话可否通过其他方式与您沟通学习

[ 本帖最后由 binghe6610 于 2011-7-2 17:49 编辑 ]
2011-07-02 16:51
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
这个还有点麻烦,这两个表关联的地方还不少。
用触发器好像也不怎么妥当,表2(从表)删除一条记录同时表1(主表)关联字段数据减少金额,不知道触发器能否做到。

这两个表是我的程序的两个核心业务的表,数据量还很大
2011-07-02 17:20
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
其实两个表之间有这样一个关系:
表1.金额=sum(表2.金额)

表1.金额的数据都是通过表2.金额的变动(增加或减少)更新而来的
2011-07-02 17:25
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
两个表我并没有建立主从关系
2011-07-02 17:26
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
好的,非常感谢
2011-07-02 17:48
binghe6610
Rank: 2
等 级:论坛游民
帖 子:273
专家分:61
注 册:2009-2-23
收藏
得分:0 
存储过程我用的倒是不少,触发器没用几个,对触发器掌握不是很好。
存储过程的确是个不错的选择
2011-07-02 17:54
快速回复:对SqlTransaction事务有点失望
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046373 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved