2


有两个
表表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 ;

请帮助我如何编写触发器。

4

2 回答 2

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 $$
于 2013-06-17T11:26:29.260 回答
1

试试这样...

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;
于 2013-06-17T10:27:12.707 回答