sql >> Database teknologi >  >> RDS >> Mysql

Udløser til opdatering af forældrekolonne baseret på antal underordnede tabel

Du skal bruge 2 triggere for at opnå dette.

  1. efter opdatering om børn
  2. efter sletning på børn

Eksempel 1 :Efter OPDATERING :

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 ;

Eksempel 1 :Efter SLETT :

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. DAY() Eksempler i SQL Server (T-SQL)

  2. IN-klausul med NULL eller ER NULL

  3. Hvordan fortolkes sql med rekursiv sætning?

  4. Kan ikke oprette forbindelse til MySQL fra Java:NullPointerException inde i MySQL-driverforbindelseslogikken