[英]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;
也试过如下;
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 调用旧代码,当我认为我删除了 delimeter 但是我不是。
因此,正如@olivier 在第一篇文章的评论中提到的那样,我将查询更改为此;
CREATE TRIGGER pdfdenemeu BEFORE INSERT ON denemetbl FOR EACH ROW BEGIN SET NEW.iki= CONCAT(NEW.bir,'.pdf'); END;
工作完美。 @olivier 谢谢,我欠你一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.