[英]Delphi Unidac MySQL Create Trigger From Memo Code Syntax Error
Here is my MySQL Trigger code;这是我的 MySQL 触发代码;
DELIMITER //
CREATE TRIGGER pdfdenemeu BEFORE INSERT
ON denemetbl
FOR EACH ROW
BEGIN
SET NEW.iki = CONCAT(NEW.bir,'.pdf');
END//
DELIMITER ;
When i run this code on HeidiSQL it creates trigger and works perfectly.当我在 HeidiSQL 上运行此代码时,它会创建触发器并完美运行。
On Delphi XE7 i'm adding a button and a memo to form, putting this code inside of the memo, and button's onclick event is;在 Delphi XE7 上,我添加了一个按钮和一个备忘录,将这段代码放在备忘录中,按钮的 onclick 事件是;
sorgu.Close;
sorgu.SQL.Clear;
sorgu.SQL.Add(trim(memo1.text));
sorgu.ExecSQL;
When i click to button, it returns syntax error;当我点击按钮时,它返回语法错误;
Also tried as below;也试过如下;
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;
As i mentioned trigger code works without any error on HeidiSQL and MySQL command line, why i'm getting this error message, what am i doing wrong?正如我提到的触发代码在 HeidiSQL 和 MySQL 命令行上没有任何错误,为什么我收到此错误消息,我做错了什么?
As @olivier mentioned DELIMETER is specific to HeidiSQL, i tried to remove delimeter and tried again but didn't solved the problem, but what i did was call the old code with delimeter from my new code, when i thought i removed the delimeter but i wasn't.正如@olivier 提到的 DELIMETER 是 HeidiSQL 特有的,我尝试删除 delimeter 并再次尝试但没有解决问题,但我所做的是用我的新代码中的 delimeter 调用旧代码,当我认为我删除了 delimeter 但是我不是。
So as @olivier mentioned in first post's comment i changed query to this;因此,正如@olivier 在第一篇文章的评论中提到的那样,我将查询更改为此;
CREATE TRIGGER pdfdenemeu BEFORE INSERT ON denemetbl FOR EACH ROW BEGIN SET NEW.iki= CONCAT(NEW.bir,'.pdf'); END;
Worked perfectly.工作完美。 @olivier Thank you, i owe you one.
@olivier 谢谢,我欠你一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.