Mysql 触发来自不同 table 列的更新的代码

Mysql code to trigger update on column from different table

我使用的数据库有 2 个 table 城市和国家。城市 table 有 ID(PK)、人口和国家代码。国家 table 有代码 (PK) 和人口。 如果城市人口发生更新,国家人口也应该更新 automatically.The 问题是如何在适当的更新语句中实现这一点。 它应遵循以下一般模式:

  CREATE TRIGGER diff_pop
  AFTER UPDATE 
  ON city
  FOR EACH ROW 
  ...
  UPDATE country SET NEW.population=country.population-city_old+city_new 
WHERE country.population=new.population;
   

我认为可能有很多方法可以解决这个问题,因此欢迎任何意见。

CREATE TRIGGER diff_pop
AFTER UPDATE 
ON city
FOR EACH ROW
UPDATE country 
SET population = population - OLD.population + NEW.population 
WHERE country.code = NEW.countrycode;

如果有可能将城市从一个国家迁移到另一个国家,那么

CREATE TRIGGER diff_pop
AFTER UPDATE 
ON city
FOR EACH ROW
BEGIN
    UPDATE country 
    SET population = population - OLD.population 
    WHERE country.code = OLD.countrycode;
    UPDATE country 
    SET population = population + NEW.population 
    WHERE country.code = NEW.countrycode;
END

PS。不要忘记创建 AFTER INSERT 和 AFTER DELETE 触发器...


That does not work, it is ambiguous syntax according to mysql, since there is no distinction between population column on city and country. – seneca

fiddle。试着反驳一下。