sql >> Database >  >> RDS >> Mysql

hoe u een update-trigger maakt voor het verhogen/verlagen van 1 nummer tot het totale aantal stemmen

Ja, je moet een after insert trigger maken daarvoor

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 //

Voor het afhandelen van de update blijft alles hetzelfde, alleen heb je een andere trigger nodig, iets als

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 //

Aangezien je 2 post-tabellen hebt, moet je die gebruiken in de if-conditie

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 //

Doe hetzelfde voor de update-trigger.




  1. node.js/MySQL:Sommige tekenreekscoderingen (Emoji) geven fouten wanneer ik probeer in te voegen in de database

  2. Optionele parameters schrijven binnen opgeslagen procedures in MySQL?

  3. MySQL - Hoe tijden optellen?

  4. Wanneer een nieuwe rij in de database wordt toegevoegd, moet een extern opdrachtregelprogramma worden aangeroepen