创建触发器 - DECLARE 错误
Posted
技术标签:
【中文标题】创建触发器 - DECLARE 错误【英文标题】:create triggers - error at 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
吗?
【参考方案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 触发器,它们才会停止。以上是关于创建触发器 - DECLARE 错误的主要内容,如果未能解决你的问题,请参考以下文章