【问题标题】:create triggers - error at DECLARE创建触发器 - DECLARE 错误
【发布时间】:2011-09-11 15:20:14
【问题描述】:

我从http://forge.mysql.com/wiki/Triggers 学习触发器 我有:

create trigger bi_emps_fer before insert on emps for each row
begin

    declare newsal numeric default 0;
    declare namelength, l_loop int default 0;

    set namelength = length(new.emp_name);

    while l_loop < namelength do

       set newsal := newsal   new.salary;

       set l_loop := l_loop   1;

    end while;

    set new.salary = newsal;

end

和错误:

1064 - 您的 SQL 语法有错误;检查手册 对应你的 MySQL 服务器 使用正确语法的版本 第 4 行的 '' 附近

为什么? 我使用 MySQL 5.5.8 和 phpmyadmin 3.3.9

【问题讨论】:

  • 你试过在不同的行上声明namelength和l_loop吗?
  • 是的,但错误是这一行:“declare newsal numeric default 0;”
  • 0 可以作为 NUMERIC 的默认值吗?非要0.0吗?

标签: mysql sql triggers phpmyadmin declare


【解决方案1】:

您是否指定了分隔符?

delimiter #

create trigger bi_emps_fer before insert on emps for each row
begin

    declare newsal decimal(10,2) default 0;

    // do sql stuff here but not what you're doing !

    set new.salary = newsal;

end#

delimiter ;

【讨论】:

  • @TrueBlue10 我明白了。有时,我也有这些鳄鱼追着我,直到我可以正确创建 phpmyadmin 触发器,它们才会停止。
猜你喜欢
  • 1970-01-01
  • 2013-07-16
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
相关资源
最近更新 更多