Mysql 创建触发器-声明时出错
我学习触发器 我有:Mysql 创建触发器-声明时出错,mysql,sql,triggers,phpmyadmin,declare,Mysql,Sql,Triggers,Phpmyadmin,Declare,我学习触发器 我有: 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
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
insert on emps前为每行创建触发器bi\u emps\fer
开始
声明newsal数值默认值为0;
声明namelength,l_循环int默认值为0;
设置名称长度=长度(新的emp_名称);
而l_循环<名称长度
设置newsal:=newsal new.salary;
设置l_循环:=l_循环1;
结束时;
设置new.salary=newsal;
结束
和错误:
1064-您的SQL语法有错误;检查手册
对应于您的MySQL服务器
要使用的正确语法的版本
在第4行的“”附近
为什么??
我使用MySQL 5.5.8和phpmyadmin 3.3.9您指定了分隔符吗
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 ;
您指定了分隔符吗
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 ;
您是否尝试在不同的行上声明namelength和l_循环?是的,但错误是这一行:“declare newsal numeric default 0;”
0
是否可以作为numeric的默认值?您是否必须说0.0
?您是否尝试在不同的行上声明namelength和l_循环?是的,但错误是这一行:“declare newsal numeric default 0;”0
是否可以作为numeric的默认值?你一定要说0.0
?@TrueBlue10我明白。有时候,我也会让这些鳄鱼追我,直到我能正确地创建phpmyadmin触发器,它们才会停下来。@TrueBlue10我明白。有时候,我也会让这些鳄鱼追我,直到我能正确地创建phpmyadmin触发器,它们才会停下来。