sql >> Database teknologi >  >> RDS >> Mysql

Opdatering af oversigtstabellen baseret på triggere og lagrede procedurer

Nå, du forespørger DB igen og igen for data, som du allerede kender.

Hvorfor ikke bare opdatere oversigten med kun ændringerne.

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 ;

Dette vil være meget meget hurtigere og mere konkret og meget mere elegant.



  1. Hvordan har man komplet offline funktionalitet i en webapp med PostgreSQL-database?

  2. Hvornår kører SQLiteOpenHelper onCreate() / onUpgrade()?

  3. Streng ud af indeks med SQL-udvikler

  4. Enkel forbindelse med Oracle