如何编写mysql触发器
Posted
技术标签:
【中文标题】如何编写mysql触发器【英文标题】:how to write mysql trigger 【发布时间】:2013-06-17 10:18:51 【问题描述】:有两个表 表 A
如果用户使用此查询“插入 A 值(abc,1,50);”
然后触发器应该检查“表B”中的学生名,如果学生名已经在“表B”中,那么 更新表 B 中的“all_marks”字段,例如,“all_marks”应为 60
如果“表 B”中没有学生姓名“abc”,则应将相同的学生姓名、学生班级、学生标记插入到表 B 中
delimiter $$
create trigger insert_into_summary
after insert on A
for each row
begin
if
//** here i want to write the if condition **
insert into B (name,class,overall_marks)
values(new.name,new.class,new.marks,);
else
update B set all_marks=old.all_marks+new.student_marks;
end $$
delimiter ;
请帮助我如何编写触发器。
【问题讨论】:
【参考方案1】:您可以通过使用 On Duplicate Key Update 来简单地做到这一点。在学生姓名/ID 上添加唯一键,然后在触发器中使用以下代码
begin
insert into summary_score (name,number,all_marks)
values(new.name,new.marks,new.score)
on duplicate key update all_marks=old.all_marks+new.student_marks
where B.Name=new.Name;
end $$
【讨论】:
【参考方案2】:这样试试……
if (Select Count(Name) from B where B.Name=new.name)<1
insert into summary_score (name,number,all_marks)
values(new.name,new.marks,new.score);
else
update B set all_marks=old.all_marks+new.student_marks where B.Name=new.Name;
【讨论】:
以上是关于如何编写mysql触发器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MYSQL 中编写可以从触发器和存储函数调用的信号函数?