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

Aktualizowanie tabeli podsumowującej na podstawie wyzwalaczy i procedur składowanych

Cóż, w kółko przeszukujesz bazę danych w poszukiwaniu danych, które już znasz.

Dlaczego po prostu nie zaktualizować podsumowania, wprowadzając tylko zmiany.

DELIMITER $$

CREATE TRIGGER ai_base_each AFTER INSERT ON base FOR EACH ROW
BEGIN
  INSERT INTO summary (status, count) VALUES (NEW.status,1)
  ON DUPLICATE KEY UPDATE
    SET count = count + 1;
END $$

CREATE TRIGGER ad_base_each AFTER DELETE ON base FOR EACH ROW
BEGIN
  UPDATE summary s
    SET s.count = s.count - 1 
    WHERE s.status = OLD.status;
END $$


CREATE TRIGGER au_base_each AFTER UPDATE ON base FOR EACH ROW
BEGIN
  UPDATE summary s
    SET s.count = s.count - 1 
    WHERE s.status = OLD.status;

  INSERT INTO summary (status, count) VALUES (NEW.status,1)
  ON DUPLICATE KEY UPDATE
    SET count = count + 1;
END $$

DELIMITER ;

Będzie to znacznie szybsze i bardziej konkretne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolumna wyboru MySQL, która jest wartością w innej kolumnie

  2. Konfiguracja CentOs PHP i MySql

  3. Jak uzyskać kategorie i podkategorie Query Builder w Laravel?

  4. Tworzenie tabeli nie powiodło się, a ograniczenie klucza obcego jest niepoprawnie utworzone

  5. funkcja oczyszczania danych wejściowych do bazy danych Mysql