如何解决Delphi Unidac 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的旧代码。距离计,但我不是。
因此,正如第一篇评论中提到的@olivier一样,我将查询更改为此;
CREATE TRIGGER pdfdenemeu BEFORE INSERT ON denemetbl FOR EACH ROW BEGIN SET NEW.iki= CONCAT(NEW.bir,'.pdf'); END;
工作完美。 @olivier谢谢,我欠你一个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。