gpt4 book ai didi

sql - 在 MS Access 中回滚多个 SQL 更新查询

转载 作者:太空狗 更新时间:2023-10-30 01:51:04 24 4
gpt4 key购买 nike

我在 MS Access 的 VBA 中执行了多个 SQL 存储过程(例如 UPDATE、SELECT INTO 语句):

CurrentDb.执行“qry1”
CurrentDb.执行“qry2”

我想要这样:
* 如果 qry2 失败,它将撤消 qry1。
* qry1 和 qry2 同时执行,(因为我有很多这样的存储过程在链中执行),所以过程运行得更快。

如何做到这一点?

最佳答案

事务可能适合,它们允许回滚:http://msdn.microsoft.com/en-us/library/bb243155.aspx

编辑

这是 DAO 中的一个粗略示例:

Dim strSQL As String
Dim db As DAO.Database
Dim wrk As Workspace

On Error GoTo TrapError

Set db = CurrentDb
Set wrk = DBEngine.Workspaces(0)

wrk.BeginTrans
strSQL = "Update sysInfo Set InvoiceOR=False"
db.Execute strSQL, dbFailOnError
wrk.CommitTrans

Exit_Sub:
Set db = Nothing
Set wrk = Nothing
Exit Sub

TrapError:

MsgBox "Failed: " & Err.Description
wrk.Rollback
Err.Clear
Resume Exit_Sub

以下是ADO的一些粗略注释:

Dim cmd As ADODB.Command
Dim cn As ADODB.Connection

Set cmd = CreateObject("ADODB.Command")
Set cn = CurrentProject.Connection

cmd.CommandText = "Update sysInfo Set InvoiceOR=False"
cmd.ActiveConnection = cn
cmd.ActiveConnection.BeginTrans
cmd.Execute , , adExecuteNoRecords

If Err <> 0 Then
cmd.ActiveConnection.RollbackTrans
Else
cmd.ActiveConnection.CommitTrans
End If

关于sql - 在 MS Access 中回滚多个 SQL 更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com