簡體   English   中英

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;

當我點擊按鈕時,它返回語法錯誤; 錯誤截圖

也試過如下;

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM