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行“”附近要使用的正确语法