Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在更新第一列时创建触发器以更新第二列的值_Mysql_Triggers - Fatal编程技术网

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

Mysql 在更新第一列时创建触发器以更新第二列的值,mysql,triggers,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; 然而,这给了我语法错误&我无法找到它的确切代码。有人能帮忙吗?你需要一个触发器

我的桌子有这样的结构:

products:
mrp | discount | price
我想创建一个触发器,这样如果我更改折扣的值,它就会相应地设置价格

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

然而,这给了我语法错误&我无法找到它的确切代码。有人能帮忙吗?

你需要一个
触发器,而不是
触发器

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 ;
分隔符//
在产品更新之前创建触发器updateprice
每行开始
如果是新的。折扣旧的。那么折扣
设置new.price=((100-new.折扣)/100)*new.mrp;
如果结束;
结束;
//
定界符;

我不明白,只有在更新了折扣栏之后,我才想更新价格栏,所以逻辑上它应该在之后而不是之前。我还需要添加if条件,我想在特定列上触发一个事件。在触发
触发器之后,您不能处理
新的
数据。由于它是另一列上的一个数学表达式,您也可以使用条件在触发器之前计算并设置它。条件可以类似于
如果NEW.discount OLD.discount,那么set NEW.price=…
。这给了我一个错误“您的SQL语法有错误”错误代码:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第4行“”附近要使用的正确语法