sql >> Databáze >  >> RDS >> Mysql

Spouštěče MySQL a SUM()

To je to, co je známé jako problém "Mutating Table". Jde o to, že spouštěč řádku nemá povolen přístup k jiným řádkům ve stejné tabulce, protože neexistuje žádná záruka, že řádky budou aktualizovány mimo jiné v určitém pořadí.

Za prvé, opravdu byste se neměli pokoušet ukládat total_income, když si jej můžete v případě potřeby snadno vypočítat. To znamená, že si myslím, že můžete dělat, co chcete, tím, že uděláte něco jako

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;

Cílem je upravit student.total_income vzhledem k jeho předchozí hodnotě, protože můžete odkazovat pouze na family.income vzhledem k jeho předchozí hodnotě.



  1. Jak převedu BLOB na VARCHAR v MySQL?

  2. Potíže s velkými daty:Hardware nebo software… Spotřebiče…

  3. Posílejte a získejte zároveň v php

  4. Kopírování mysql databází z jednoho počítače do druhého