错误1064(42000):尝试创建触发器时,SQL语法中出错

时间:2015-05-21 23:09:22

标签: mysql

 create
 definer ='root'.'localhost'
 trigger 'maria'.'profesori'
 before insert on 'maria'.'profesori'
 for each row
 begin
 declare mesaj varchar (150);
 if new.nume='Tudor' then
 set mesaj='eroare';
 signal sqlstate'4500' set message_text=mesaj;
 end if;
 end $$;'

但我一直收到此错误消息:

  

错误1064(42000):您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便在&#39 ;;附近使用正确的语法;   创建   definer =' root'。' localhost'   触发玛丽亚'。' profesori'   在插入o'之前在第1行

2 个答案:

答案 0 :(得分:1)

尝试:

create
 definer ='root'@'localhost'
 trigger `maria`.`profesori`
 before insert on `maria`.`profesori`
 for each row
 begin
 declare mesaj varchar (150);
 if new.nume='Tudor' then
 set mesaj='eroare';
 signal sqlstate'4500' set message_text=mesaj;
 end if;
 end $$
  1. 定义者的格式应为user@host,而不是user.host
  2. 数据库,触发器和表名称应使用反引号引用,而不是单引号(或者根本不引用 - 仅当它们是保留字或包含特殊字符时才需要。)
  3. ;之后的$$可能会出现问题。

答案 1 :(得分:-2)

更改: 信号sqlstate' 4500' set message_text = mesaj; 对此: 信号sqlstate' 45000' set message_text = mesaj;