救助mysql触发器判断语句

liulanger160 2010-06-10 11:11:46
触发器实现如下功能:

A表中字段:af1,af2,af3
B表中字段:bf1,bf2,bf3
当表A中增加一条记录,B中也会增加一条记录,现在开始判断了,如果af1的值是1,那么B表中的字段bf1的值则是china,如果值是2,那么B表中的字段bf1的值则是USA,如果是值是3,那么B表中的字段bf1的值则是english...
有多个判断的,请教如何写?
...全文
284 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulanger160 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 acmain_chm 的回复:]
改成如下
SQL code
delimiter $$
drop trigger if exists addStudent$$
create trigger addStudent
AFTER INSERT ON student
FOR EACH ROW
begin



insert into borrowstudent(StudentID,city) values(new……
[/Quote]

谢谢 ACMAIN_CHM,你太强了,每个问题都是你在回答~都是你帮我解决了~~ 我简直就感激得一蹋糊涂~~
ACMAIN_CHM 2010-06-10
  • 打赏
  • 举报
回复
或者代码简练一点儿。

delimiter $$
drop trigger if exists addStudent$$
create trigger addStudent
AFTER INSERT ON student
FOR EACH ROW
begin
insert into borrowstudent(StudentID,city) values(new.StudentID,elt( new.city,'china','english','USA'));
end$$
delimiter ;
ACMAIN_CHM 2010-06-10
  • 打赏
  • 举报
回复
改成如下
delimiter $$
drop trigger if exists addStudent$$
create trigger addStudent
AFTER INSERT ON student
FOR EACH ROW
begin



insert into borrowstudent(StudentID,city) values(new.StudentID,case
when new.city=1 then 'china'
when new.city=2 then 'english'
when new.city=3 then 'USA'
end);
end$$
delimiter ;
liulanger160 2010-06-10
  • 打赏
  • 举报
回复
这样子会出错,怎么回事?
delimiter $$
drop trigger if exists addStudent$$
create trigger addStudent
AFTER INSERT ON student
FOR EACH ROW
begin
case
when new.city=1 then 'china'
when new.city=2 then 'english'
when new.city=3 then 'USA'
end
insert into borrowstudent(StudentID,city) values(new.StudentID,city);
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 ''china'
when new.city=2 then 'english'
when new.city=3 then 'USA'
end
' at line 6
ACMAIN_CHM 2010-06-10
  • 打赏
  • 举报
回复
手册中查看

IF .. THEN
END IF

CASE WHEN .. END

还有一个 ETL() 函数。
ACMAIN_CHM 2010-06-10
  • 打赏
  • 举报
回复
if new.af1=1 then
set var='China';
end if

简单一点就用 case new.af1 when 1 then 'china' when 2 then 'USA" ,... end

自己参考一下手册中的具体语法吧。

MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
GOODlivelife 2010-06-10
  • 打赏
  • 举报
回复
触发器楼主自己去参考用户手册
http://dev.mysql.com/doc/refman/5.1/zh/index.html

B表的bf1,可以这样判断

case
when new.af1=1 then 'china'
when new.af1=2 then 'USA'
when new.af1=3 then 'english'
end
wwwwb 2010-06-10
  • 打赏
  • 举报
回复

insert into b(bf1) values(if(new.af1=1,'china;,if(new.af1=2,'USA','english')))

56,687

社区成员

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

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