Mysql
 sql >> база данни >  >> RDS >> Mysql

Задействане за актуализиране на родителска колона въз основа на броя на дъщерната таблица

Трябва да използвате 2 тригера, за да постигнете това.

  1. след актуализация на деца
  2. след изтриване на деца

Пример 1 :След АКТУАЛИЗАЦИЯ :

delimiter //

drop trigger if exists au_on_children //

create trigger au_on_children after update on children 
for each row
begin
  declare old_totalCapacity int not null default 0;
  declare new_totalCapacity int not null default 0;

  select 
    case when homeID = OLD.homeID 
              then sum( OLD.homeID ) 
         else sum( homeID ) 
     end 
    into old_totalCapacity ,
    case when homeID = NEW.homeID 
              then sum( NEW.homeID ) 
         else sum( homeID )
     end 
    into new_totalCapacity 
    from children;

  update home 
     set capacity =  
         case when homeID = OLD.homeID 
                   then old_totalCapacity  
              else capacity 
         end ,
         case when homeID = NEW.homeID 
                   then new_totalCapacity 
              else capacity 
         end ;
end;
//

delimiter ;

Пример 1 :След ИЗТРИВАНЕ :

delimiter //

drop trigger if exists ad_on_children //

create trigger ad_on_children after delete on children 
for each row
begin
  declare totalCapacity int not null default 0;

  select sum( homeID ) 
    into totalCapacity 
    from children 
   where homeID = OLD.homeID;

  update home 
     set capacity = totalCapacity 
   where homeId = OLD.homeID;
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 тригер за проверка на стойности преди вмъкване няколко пъти

  2. mySQL:Подзаявка към масив?

  3. Асинхронно репликация Автоматично отказване в MySQL 8.0.22

  4. Изпълнете командата mysql преди тестов скрипт на GitLab CI

  5. Най-често срещаните MySQL заявки