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. 1つのステートメントで複数の列を変更する

    2. 1つのスキーマに複数のユーザーを含めることはできますか?

    3. Windows64ビット用のOracleOCI8の構成

    4. SQL Server 2016:クエリデザイナー