Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оптимална MySQL-конфигурация (my.cnf)

  2. Sqlite Добавяне на колона в таблица на определена позиция (Android)

  3. Покажете името на рецептата, ако всички нейни съставки вече са дадени

  4. Сумата на MySQL въз основа на стойността на col

  5. Използване на MySQL релационни бази данни на Arch Linux