在事务中包装SQL语句

时间:2016-11-26 02:10:35

标签: mysql sql delphi transactions

我使用以下内容:

begin
dbmodule.comenziQuery.SQL.Clear;
dbmodule.comenziQuery.SQL.Add('INSERT INTO `r33758pi_tipotask`.`arhiva` SELECT id, data, stare, client, telefon, email, detalii, observatii, pret, livrare, user, status FROM comenzi WHERE `id`='''+inttostr(dbmodule.comenziDataSetid.Value)+''';');
dbmodule.comenziQuery.ExecSQL(true);

dbmodule.comenziQuery.SQL.Clear;
dbmodule.comenziQuery.SQL.Add('DELETE FROM `r33758pi_tipotask`.`comenzi` WHERE `id`='''+inttostr(dbmodule.comenziDataSetid.Value)+''';');
dbmodule.comenziQuery.ExecSQL(true);
end;

任何人都可以指导我如何在交易中包装它吗? 我之前从未使用过,而且我很难理解如何修改代码来添加它。

我试图将其添加到transaction中,因为我已经阅读过它是一种很好的做法,因为如果1失败则根本无法执行。

我已尝试按照本指南Some Guide进行操作,然后使用那里提到的begin transactionbegin try,但我猜不是没有意图对于德尔福代码,或者其他什么......没有运气。

希望代码没问题,请随时指出我到目前为止可能做的任何错误。

Delphi,使用Rad Studio 10 Seattle,TSQLQuery - 服务器是mysql - 如果我遗漏了任何内容,我会在评论中告诉我。我会编辑。

1 个答案:

答案 0 :(得分:0)

事务通常在SQL Server存储过程中使用,其中您在BEGIN TRANSACTION和COMMIT TRANSACTION或ROLLBACK TRANSACTION语句之间有一个sql语句块。

不确定它是否与MySQL相同。

事务通常在sql server上处理,而不是从代码处理。