对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
请高手赐教!