Delphi Unidac MySQL 根据备忘录代码语法错误创建触发器

Delphi Unidac MySQL Create Trigger From Memo Code Syntax Error

这是我的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;

当我点击按钮时,它 returns 语法错误;

也试过如下;

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 命令行上没有任何错误,为什么我收到此错误消息,我做错了什么?

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

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

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

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