sql >> Databáze >  >> RDS >> Mysql

Aktualizace souhrnné tabulky na základě spouštěčů a uložených procedur

No, znovu a znovu se dotazujete DB na data, která již znáte.

Proč neaktualizovat souhrn pouze o změny.

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 ;

Bude to mnohem rychlejší a k věci mnohem elegantnější.



  1. Jak změnit datový typ CLOB na VARCHAR2(sql)

  2. Vložte perskou hodnotu do tabulky s php kódem

  3. docker SHM_SIZE /dev/shm:změna velikosti sdílené paměti

  4. Vyberte odlišné záznamy ve spojení