0

这是我的 MySQL 触发器代码;

DELIMITER //
CREATE TRIGGER pdfdenemeu BEFORE INSERT
ON denemetbl
FOR EACH ROW
BEGIN
  SET NEW.iki =  CONCAT(NEW.bir,'.pdf');
END//
DELIMITER ;

当我在 HeidiSQL 上运行此代码时,它会创建触发器并完美运行。

在 Delphi XE7 上,我添加了一个按钮和一个备忘录来形成,将此代码放在备忘录中,并且按钮的 onclick 事件是;

sorgu.Close;
sorgu.SQL.Clear;
sorgu.SQL.Add(trim(memo1.text));
sorgu.ExecSQL;

当我单击按钮时,它返回语法错误; 错误截图

也尝试如下;

sorgu.Close;
sorgu.SQL.Clear;
sorgu.SQL.Add('DELIMITER //');
sorgu.SQL.Add('CREATE TRIGGER pdfdenemeu BEFORE INSERT');
sorgu.SQL.Add('ON denemetbl');
sorgu.SQL.Add('FOR EACH ROW');
sorgu.SQL.Add('BEGIN');
sorgu.SQL.Add('SET NEW.iki =  CONCAT(NEW.bir,''.pdf'');');
sorgu.SQL.Add('END//');
sorgu.SQL.Add('DELIMITER ;');
sorgu.Execute;

正如我提到的触发器代码在 HeidiSQL 和 MySQL 命令行上没有任何错误,为什么我会收到这个错误消息,我做错了什么?

4

1 回答 1

0

正如@olivier提到的DELIMETER特定于HeidiSQL,我尝试删除分隔符并再次尝试但没有解决问题,但是我所做的是从我的新代码中调用带有分隔符的旧代码,当我认为我删除了分隔符但是我不是。

因此,正如@olivier 在第一篇文章的评论中提到的那样,我将查询更改为此;

CREATE TRIGGER pdfdenemeu BEFORE INSERT ON denemetbl FOR EACH ROW BEGIN SET NEW.iki= CONCAT(NEW.bir,'.pdf'); END;

工作完美。@olivier 谢谢,我欠你一个。

于 2020-10-09T07:55:00.327 回答