Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kích hoạt để cập nhật cột chính dựa trên số lượng bảng con

Bạn phải sử dụng 2 trình kích hoạt để đạt được điều này.

  1. sau khi cập nhật về trẻ em
  2. sau khi xóa đối với trẻ em

Ví dụ 1 : Sau khi CẬP NHẬT :

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 ;

Ví dụ 1 : Sau khi XÓA :

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. Dấu hiệu Euro không hiển thị trên trang web

  2. Lỗi datetime Mysql DEFAULT CURRENT_TIMESTAMP

  3. Cách sử dụng php đếm các cặp từ (chuỗi) mảng chèn vào MySQL

  4. Sử dụng sqlalchemy để truy vấn bằng cách sử dụng nhiều cột trong mệnh đề

  5. MySQL:Có thể tạo truy vấn đánh giá dữ liệu từ các bản ghi khác nhau không?