sql >> Database >  >> RDS >> Mysql

De overzichtstabel bijwerken op basis van triggers en opgeslagen procedures

Welnu, u vraagt ​​de DB steeds opnieuw naar gegevens die u al kent.

Waarom niet gewoon de samenvatting bijwerken met alleen de wijzigingen.

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 ;

Dit zal veel veel sneller en meer to the point veel eleganter zijn.



  1. Voeg de tweede kolomwaarde samen als de eerste kolomwaarde hetzelfde is

  2. update xml-gegevens met behulp van sql-query op postgresql

  3. php hoe json-gegevens op te slaan en te lezen via mysql?

  4. Hoe de SOUNDS LIKE-operator werkt in MySQL