sql >> データベース >  >> RDS >> Mysql

MySQLトリガーとSUM()

    これは「ミューティングテーブル」問題として知られているものです。つまり、行が特定の順序で更新される保証はないため、行トリガーは同じテーブル内の他の行にアクセスできません。

    まず、必要なときに簡単に計算できる場合は、total_incomeを保存しようとしてはいけません。そうは言っても、次のようなことをすることで、やりたいことができると思います

    CREATE TRIGGER family_income_update
      AFTER UPDATE ON family
      FOR EACH ROW 
    BEGIN
      UPDATE student
        SET total_income = total_income + (NEW.income - OLD.income)
        WHERE student.id_student = NEW.id_student;
    END;
    

    アイデアは、student.total_incomeを変更することです family.incomeしか参照できないため、以前の値と比較して 以前の値と比較して。



    1. MySQL置換コマンドで正規表現を使用する方法は?

    2. SQLServerトランザクションログの基本

    3. MariaDBでのLTRIM_ORACLE()のしくみ

    4. 奇妙な-mysqlのsql::SQLExceptionはそのタイプによってキャッチされませんが、std ::exceptionとしてキャッチされ、正常にキャストバックされます