Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memperbarui tabel ringkasan berdasarkan pemicu dan prosedur tersimpan

Nah Anda meminta ulang DB berulang kali untuk data yang sudah Anda ketahui.

Mengapa tidak memperbarui ringkasan dengan perubahan saja.

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 ;

Ini akan jauh lebih cepat dan jauh lebih elegan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Output database PHP tidak menunjukkan cara yang benar

  2. Mengatur koneksiPool crash Slick 3.0

  3. JPA RollbackException tetapi tidak dalam pengujian unit

  4. GALAT 1406:1406:Data terlalu panjang untuk kolom tetapi tidak seharusnya?

  5. Karakter Unicode (Yunani) disimpan dalam database seperti ??????