sql >> データベース >  >> RDS >> Mysql

総投票数に対して1つの数を増減するための更新トリガーを作成する方法

    はい、after insert triggerを作成する必要があります そのために

    delimiter //
    create trigger total_votes_count after insert on votes
    for each row
    begin
     if (new.value == 1) then
       update posts set total_votes = total_votes+1 
       where id = new.id_post;
     elseif (new.value == -1) then
       update posts set total_votes = total_votes-1 
       where id = new.id_post;
     end if;
    end;//
    
    delimiter //
    

    更新を処理するためにすべて同じままです、あなただけが何かをトリガーする必要があります

    delimiter //
        create trigger total_votes_count_upd after update on votes
        for each row
        begin
         if (new.value == 1) then
           update posts set total_votes = total_votes+1 
           where id = new.id_post;
         elseif (new.value == -1) then
           update posts set total_votes = total_votes-1 
           where id = new.id_post;
         end if;
        end;//
    
        delimiter //
    

    2つの投稿テーブルがあるので、if条件でそれを使用する必要があります

    delimiter //
    create trigger total_votes_count after insert on votes
    for each row
    begin
     if (new.value == 1) then
       if (new.table_name == 'post_A') then 
         update posts_A set total_votes = total_votes+1 
         where id = new.id_post;
       else
         update posts_B set total_votes = total_votes+1 
         where id = new.id_post;
       end if;
     elseif (new.value == -1) then
       if (new.table_name == 'post_A') then
          update posts_A set total_votes = total_votes-1 
          where id = new.id_post;
       else
          update posts_B set total_votes = total_votes-1 
          where id = new.id_post;
       end if ; 
     end if;
    end;//
    
    delimiter //
    

    更新トリガーについても同じようにします。




    1. Drupalのデフォルトのパスワード暗号化方法は何ですか?

    2. postgresqlでNOTINが機能しない

    3. SQLServerでデータベースを作成するときにデータファイルとログファイルの場所を指定する方法

    4. TIME_TO_SEC()の例– MySQL