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

Актуализиране на обобщената таблица въз основа на тригери и съхранени процедури

Ами вие пренасочвате към DB отново и отново за данни, които вече знаете.

Защо просто не актуализирате резюмето само с промените.

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 ;

Това ще бъде много по-бързо и по-конкретно много по-елегантно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да използвам `charset` и `encoding` в `create_engine` на SQLAlchemy (за създаване на рамка с данни на pandas)?

  2. Как мога да ускоря MySQL заявката с множество обединявания

  3. Rails 3 - грешка при внезапно чакащи миграции

  4. MySQL LEFT JOIN с помощта на MAX &GROUP BY върху обединена маса?

  5. RMySQL системна грешка:10060