gpt4 book ai didi

MySQL : start Transaction if a condition was true

转载 作者:行者123 更新时间:2023-11-29 21:59:37 25 4
gpt4 key购买 nike

我想在事务中执行一些运行时生成的 SQL 命令,没有问题,但如果条件为真,我应该启动此事务,例如:

  SQLText := 'IF (SELECT COUNT(ID) FROM desk_table WHERE Status = 1 AND Number = ' 
+ IndDeskGrid.DataSource.DataSet.FieldByName('Number').AsString + ' > 0) BEGIN '
+ 'SET autocommit = 0;'
+ 'START TRANSACTION;'
+ 'INSERT INTO waiting_table (UName, DNumber, MDate, HDate, HaveReq)'
+ ' VALUES (' + QuotedStr(User.UName) + ', '
+ IndDeskGrid.DataSource.DataSet.FieldByName('Number').AsString
+ ', ' + QuotedStr(MTodayString) + ', ' + QuotedStr(HTodayString) + ', 2);'
+ 'UPDATE desk_table SET Status = 2 WHERE Number = '
+ IndDeskGrid.DataSource.DataSet.FieldByName('Number').AsString + ';'
+ 'COMMIT;'
+ 'SET autocommit = 1;'
+ 'END;';

生成的 SQL:

IF (SELECT COUNT(ID) FROM desk_table WHERE Status = 1 AND Number = 202 > 0)
BEGIN
SET autocommit = 0;
START TRANSACTION;
INSERT INTO waiting_table (UName, DNumber, MDate, HDate, HaveReq)
VALUES ('UserName', 202, '2015/09/25', '2015/09/25', 2);
UPDATE desk_table SET Status = 2 WHERE Number = 202;
COMMIT;
SET autocommit = 1;
END;

但是当我像上面的代码一样使用 IF 时,出现语法错误

我尝试过 IF..THEN..ENDIF 并且遇到了同样的错误

如何在不使用存储过程和参数的情况下做到这一点?!

我使用 UniDAC 和 Delphi XE6 以及 MySQL(InnoDB)

谢谢...

最佳答案

实际上是end if;你必须把它放在最后

关于MySQL : start Transaction if a condition was true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783064/

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