2


2つのテーブルがあり
ます テーブルA

ユーザーがこのクエリを使用する場合、「A値に挿入(abc、1、50);」

次に、トリガーは、student_name が「テーブル B」に既に存在する場合、「テーブル B」の student_name をチェックし、テーブル B の「all_marks」フィールドを更新します。たとえば、「all_marks」は 60 にする必要があります。

学生名「abc」が「テーブル B」にない場合、同じ学生名、学生クラス、学生マークをテーブル 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

このようにしてみてください...

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 に答える
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 に答える