mysql触发器,语法有错吗?

frr0717 2012-09-11 11:57:27

create trigger urgentStop
after update
on phonedetail
for each row
begin
update phonedetail
set status = "紧急停机"
where balance <= 0
end$$
delimiter ;



还是这么写呢:

create trigger urgentStop
after update
on phonedetail
for each row
begin
update phonedetail
set status = "紧急停机"
where balance <= 0
end$$
delimiter ;


但是都有错额。报错是:#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 'end' at line 9
请问怎么修改?谢谢大家!
...全文
164 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
frr0717 2012-09-11
  • 打赏
  • 举报
回复
补充一下,我是在phpmyadmin上直接执行语句的。
frr0717 2012-09-11
  • 打赏
  • 举报
回复
补充一下,我实在phphmyadmin上直接执行语句的。
frr0717 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

mysql> create trigger urgentStop
-> after update
-> on phonedetail
-> for each row
-> begin
-> update phonedetail
-> set status = "紧急停机"
-> where balance <= 0;
……
[/Quote]
我现在想在一个触发器中写2句话,中间不管用不用冒号都报错啊!如下所示:
create trigger urgentStop_and_cancelUrgentStop
after update
on phonedetail
for each row
begin
update phonedetail
set status = "紧急停机"
where balance <= 0;

update phonedetail
set status = "正常开通"
where balance > 0;

end
应该怎么写呢?谢谢!
rucypli 2012-09-11
  • 打赏
  • 举报
回复
mysql> create trigger urgentStop
-> after update
-> on phonedetail
-> for each row
-> begin
-> update phonedetail
-> set status = "紧急停机"
-> where balance <= 0;
-> end
-> $
Query OK, 0 rows affected (0.03 sec)
frr0717 2012-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

少个分号吧
create trigger urgentStop
after update
on phonedetail
for each row
begin
update phonedetail
set status = "紧急停机"
where balance <= 0;
end$$
delimiter ;
[/Quote]
这么写也不对:
create trigger urgentStop
after update
on phonedetail
for each row
begin
update phonedetail
set status = "紧急停机"
where balance <= 0;
end
报错是:MySQL 返回:
#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 8
rucypli 2012-09-11
  • 打赏
  • 举报
回复
少个分号吧
create trigger urgentStop
after update
on phonedetail
for each row
begin
update phonedetail
set status = "紧急停机"
where balance <= 0;
end$$
delimiter ;
ACMAIN_CHM 2012-09-11
  • 打赏
  • 举报
回复
PHPADMIN中你需要设置一下 delimiter, 这个可以直接页面上设置。
小小小小周 2012-09-11
  • 打赏
  • 举报
回复
root@localhost : test 02:31:47>delimiter //
root@localhost : test 02:31:53>create trigger urgentStop_and_cancelUrgentStop
-> after update
-> on phonedetail
-> for each row
-> begin
-> update phonedetail set status = "紧急停机" where balance <= 0;
-> update phonedetail set status = "正常开通" where balance > 0;
-> end//
Query OK, 0 rows affected (0.08 sec)

root@localhost : test 02:31:53>delimiter ;
root@localhost : test 02:31:55>


命令行执行木有问题。
WWWWA 2012-09-11
  • 打赏
  • 举报
回复
加入
delimiter $$
...
delimiter ;

在MYSQL命令行下输入,改变语句结束符
rucypli 2012-09-11
  • 打赏
  • 举报
回复
mysql> delimiter $
mysql> create trigger urgentStop
-> after update
-> on phonedetail
-> for each row
-> begin
-> update phonedetail
-> set status = "紧急停机"
-> where balance <= 0;
-> end
-> $
Query OK, 0 rows affected (0.03 sec)

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧