微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Delphi Unidac MySQL从备注代码语法错误创建触发器

如何解决Delphi Unidac MySQL从备注代码语法错误创建触发器

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

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

ERROR SCREENSHOT

也尝试如下;

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;

正如我提到的那样,触发器代码在HeidisqlMySQL命令行上没有任何错误,为什么我收到此错误消息,我在做什么错了?

解决方法

正如@olivier提到的DELIMETER特定于HeidiSQL一样,我尝试删除delimeter并再次尝试但未解决问题,但是当我认为删除时,我所做的是从新代码中调用带有delimeter的旧代码。距离计,但我不是。

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。