如何在触发器中使用事务 例如添加一个纪录时更改另一个表中相关的字段 触发器如下: CREATE TRIGGER [output_ADD] ON [dbo].[storage_output] FOR INSERT AS update storage_input set sin_remain=sin_remain-i.sout_amount from storage_input s,inserted i where s.sin_id=i.sout_sinid and s.sin_miid=i.sout_miid 在程序中是使用循环将纪录一条一条添加 trans=conn.begintransaction cmd.transactioin=trans for i=0 to dt.rows.count-1 sql="" cmd.commandtext=sql cmd.ExecuteNonQuery() nexttrans.commit catch ex as exception trans.rollback end try
' △@(f)
' 功能 : △ 事务处理开始
' 返回值 : △ True - 成功
' : △ False - 失败
' 参数 : △
' 作成 : △
' 更新 : △
' 功能说明 : △
' 备注 : △
'**************************************************************************
Public Function FngBeginTrans() As Boolean
On Error GoTo errHandle
FngBeginTrans = False
Connection.BeginTrans
FngBeginTrans = True
Exit Function
errHandle:
If (Err.Number <> 0) Then
MsgBox Err.Description, vbCritical, "事务处理开始"
End If
End Function'**************************************************************************
' △@(f)
' 功能 : △ 事务处理提交
' 返回值 : △ True - 成功
' : △ False - 失败
' 参数 : △
' 作成 : △
' 更新 : △
' 功能说明 : △ (事务处理提交。)
' 备注 : △
'**************************************************************************
Public Function FngCommitTrans() As Boolean
On Error GoTo errHandle
FngCommitTrans = False
Connection.CommitTrans
FngCommitTrans = True
Exit Function
errHandle:
If (Err.Number <> 0) Then
MsgBox Err.Description, vbCritical, "事务处理提交"
End If
End Function'**************************************************************************
' △@(f)
' 功能 : △ 事务处理回滚
' 返回值 : △ True - 成功
' : △ False - 失败
' 参数 : △
' 作成 : △
' 更新 : △
' 功能说明 : △ (事务处理回滚。)
' 备注 : △
'**************************************************************************
Public Function FngRollbackTrans() As Boolean
On Error GoTo errHandle
FngRollbackTrans = False
Connection.RollbackTrans
FngRollbackTrans = True
Exit Function
errHandle:
If (Err.Number <> 0) Then
MsgBox Err.Description, vbCritical, "事务处理回滚"
End If
End Function
在程序中 btnSave_click过程中使用事务
try
.
.
.
trans.commit
catch ex as exception
trans.rollback
end try
想不明白这怎么就能够和触发器同步了???
不管什么程序都有事务管理
VB就象上面一样
JAVA也可以对CONNECTION进行事务
例如添加一个纪录时更改另一个表中相关的字段
触发器如下:
CREATE TRIGGER [output_ADD] ON [dbo].[storage_output]
FOR INSERT
AS
update storage_input set sin_remain=sin_remain-i.sout_amount
from storage_input s,inserted i
where s.sin_id=i.sout_sinid and s.sin_miid=i.sout_miid
在程序中是使用循环将纪录一条一条添加
trans=conn.begintransaction
cmd.transactioin=trans
for i=0 to dt.rows.count-1
sql=""
cmd.commandtext=sql
cmd.ExecuteNonQuery()
nexttrans.commit
catch ex as exception
trans.rollback
end try