dongsou8980 2014-09-18 21:47
浏览 115
已采纳

创建触发器MYSQL PHPMyadmin时出错

Hi this is my first Question here so I'm just posting some of my code here if you need some more information on the problem please ask.

I'm trying to create a trigger is MYSQL via PHPMyadmin (yes I know not the best tool). The idea is to be able to clean a string before the insert query executes. Simple enough.

My code:

CREATE TRIGGER `CLEAR` BEFORE INSERT ON `TABLE` 
FOR EACH ROW BEGIN
    SET NEW.LNAME = REPLACE(NEW.LNAME,'?','');
END;

However I keep getting this error message

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

I have no idea why. any ideas are welcome thanks before hand. Also excuse my not so good ise of the english language, I'm not a native speaker.

  • 写回答

1条回答 默认 最新

  • dsw7547 2014-09-18 21:53
    关注

    You've got to change the DELIMITER before the CREATE statement and set it back afterwards:

    DELIMITER |
    CREATE TRIGGER `CLEAR` BEFORE INSERT ON `TABLE` 
    FOR EACH ROW BEGIN
        SET NEW.LNAME = REPLACE(NEW.LNAME,'?','');
    END |
    DELIMITER ;
    

    otherwise you could write your trigger so it needs no delimiter:

    CREATE TRIGGER `CLEAR` BEFORE INSERT ON `TABLE` 
    FOR EACH ROW
        SET NEW.LNAME = REPLACE(NEW.LNAME,'?','')
    

    Because there's only one statement executed in the trigger body, you don't have to enclose it in a BEGIN... END block and have no need of the semicolon to enc the statement too.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题