使用 Where 子句在 MySql 中创建触发器

Posted

技术标签:

【中文标题】使用 Where 子句在 MySql 中创建触发器【英文标题】:Create Trigger in MySql with Where Clause 【发布时间】:2018-10-01 21:48:48 【问题描述】:

我有 2 张桌子,城市和国家。当城市人口减少 5% 以上时,如何创建触发器以将同一大陆上每个国家的人口减少 5%?

城市:

|Name        | Country Code |Population
|------------|--------------|----------
| Dubai      | ARE          | 669181
| Abu Dhabi  | ARE          | 123456
| Sharja     | ARE          | 23456 

国家:

|Code  | Continent |Population| Name
|------|-----------|----------|----------
| ARE  | Asia      | 2441000  | United Arab Emirates
| ARM  | Asia      | 3520000  | Armenia 

这是我目前的查询:

delimiter $$
    create trigger decreasePop 
    before update on city
    for each row
    begin 
        update city set population = population * 0.95;
    end $$
delimiter

但我不知道如何检查百分比变化而不会遇到一些错误。

我该如何解决这个问题?谢谢!

【问题讨论】:

create trigger 不是 SQL 查询。这是一条 SQL 语句。只有select 语句是查询 【参考方案1】:

使用IFnewold 伪行。

...
IF new.population / old.population < 0.95 THEN
    UPDATE city
           SET population = population * 0.95;
END IF;
...

【讨论】:

以上是关于使用 Where 子句在 MySql 中创建触发器的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 函数调用在 QueryEditor 中创建查询以指定 WHERE IN 子句

如何在sql中创建动态where子句?

Oracle中创建了索引,啥样的原因可能使索引不能正常使用?

使用 GROUP BY 在 TRIGGER 中创建临时表

MySQL-数据库创建与删除

需要 Where 子句中的属性 (Redshift)