如何编写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 中编写可以从触发器和存储函数调用的信号函数?

如何在 MYSQL 中编写可以从触发器和存储函数调用的信号函数?

如何编写在 Mysql 触发器中获取多条记录的选择查询?

我在哪里写 MySQL 触发器

在 Mysql 中添加新列时如何轻松维护审计触发器

尝试编写 MySQL 触发器以替换 phpmyadmin 上的 CHECK 约束时出现语法错误