mysql - 创建触发器以在更新第一列时更新第二列的值

标签 mysql triggers

我的表有这样的结构:

products:
mrp | discount | price

我想创建一个触发器,这样如果我更改折扣值,它就会相应地设置价格。

create trigger updateprice on products 
after update 
as if(update(discount)) 
update products set price=((100-discount)/100)*mrp;

但是这给了我语法错误&我无法找到它的确切代码。有人可以帮忙吗?

最佳答案

您需要一个 BEFORE 触发器,但不需要 AFTER

delimiter //

create trigger updateprice  before update on products 
  for each row begin
    if new.discount <> old.discount then
       set new.price = ( ( 100 - new.discount ) / 100 ) * new.mrp;
    end if;
  end;
//

delimiter ;

关于mysql - 创建触发器以在更新第一列时更新第二列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612322/

相关文章:

mysql - 无法在 MySQL 触发器中声明变量

MYSQL - 按多个整数字段加在一起进行排序

php - 如何使用多个php类在html中获取记录

mysql - MAMP:由于许多连接错误而被阻止;在/wp-includes/wp-db.php 中使用 'mysqladmin flush-hosts' 解锁

mysql - 一次使用 LEFT JOIN 更新/创建多个

mysql - 在Mysql中添加新列时如何轻松维护审计触发器

mysql - 如何在 GCP Cloud Sql mysql 5.6 实例中获取 'max_statement_time' 作为全局变量?

用于级联递归删除的 SQL Server 触发器

MySQL 更新触发器准备好的语句解决方法?

MySQL 触发新旧查询