gpt4 book ai didi

sql-server-2005 - Delphi 应用程序使用 COMMIT 和 ROLLBACK 进行多个 SQL 更新

转载 作者:行者123 更新时间:2023-12-02 08:09:32 25 4
gpt4 key购买 nike

将 SQL 查询嵌入到多次调用 SQL 进行表更新的应用程序中时,是否可以使用 SQL BEGIN TRANSACTION、COMMIT TRANSACTION、ROLLBACK TRANSACTION。例如我有以下代码:

Q.SQL.ADD(<UPDATE A RECORD>);
Q.ExecSQL;

Q.Close;
Q.SQL.Clear;
Q.SQL.ADD(<Select Some Data>);
Q.Open;

设置一些变量

Q.Close;
Q.SQL.Clear;
Q.SQL.ADD(<UPDATE A RECORD>);
Q.ExecSQL;

我想做的是,如果第二次更新失败,我想回滚第一个事务。

如果我为BEGIN、COMMIT、ROLLBACK设置一个唯一的表示法来指定提交或回滚的内容,是否可行。

即在第一次更新之前指定 BEGIN TRANSACTION_A然后在最后一次更新后指定 COMMIT TRANSACTION_A

我希望这是有道理的。如果我在 SQL 存储过程中执行此操作,那么我将能够在过程的开始和结束时指定这一点,但由于重载 SQL 上的进程阻塞和死锁,我必须将代码分解为可管理的 block 服务器。

最佳答案

在连接上使用 StartTransaction、Commit 和 Rollback 不是更容易吗?

例如

Q.Connection.StartTransaction
try
Q.SQL.ADD();
Q.ExecSQL;

Q.Close;
Q.SQL.Clear;
Q.SQL.ADD();
Q.Open;

...


Q.Close;
Q.SQL.Clear;
Q.SQL.ADD();
Q.ExecSQL;
Q.Connection.Commit;
except
Q.Connection.Rollback;
end;

关于sql-server-2005 - Delphi 应用程序使用 COMMIT 和 ROLLBACK 进行多个 SQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2517189/

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