Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak utworzyć wyzwalacz aktualizacji dla zwiększenia/zmniejszenia 1 liczby do łącznej liczby głosów

Tak, musisz utworzyć after insert trigger za to

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

Do obsługi aktualizacji wszystko pozostaje takie samo, tylko potrzebujesz innego wyzwalacza, jak

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

Ponieważ masz 2 tabele postów, musisz użyć tego w warunku 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 //

Zrób to samo dla wyzwalacza aktualizacji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać etykiety goto w funkcji przechowywanej MySQL

  2. Prawdziwy łańcuch ucieczki i PDO

  3. Wdrażanie serwera Percona w chmurze hybrydowej

  4. próbuję uzyskać liczbę miesięcy

  5. MySQL:wybierz 5 wierszy przed i po określonym wierszu