根据另一列的计算创建MYSQL触发器以更新列

时间:2015-02-13 02:41:01

标签: mysql triggers

我有这张桌子

id     price     qty     points

如何创建触发器,以便每当我更新列价时,列点将根据价格DIV 10 DIV数量的计算进行更新?

我已经尝试但它不起作用且它没有更新列点。

delimiter $$
drop trigger if exists cart_update_rewards$$
create trigger cart_update_rewards
after update on cart
for each row 
begin
SELECT `price` DIV 10 DIV `quantity` as points FROM `cart`;
end$$ 

2 个答案:

答案 0 :(得分:1)

如果要将值分配给cart中的列,请在更新前使用""触发并指定new中的值:

delimiter $$
drop trigger if exists cart_update_rewards$$
create trigger cart_update_rewards
before update on cart
for each row 
begin
    set new.points = new.price DIV 10 DIV new.quantity ;
end$$ 

答案 1 :(得分:1)

我已经在@GordonLinoff的帮助下解决了这个问题。

DELIMITER //
CREATE TRIGGER trigger_name
BEFORE UPDATE
ON cart FOR EACH ROW
BEGIN
-- trigger code
set new.`reward_points` = new.cart_price DIV 1;
END; // 
DELIMITER ;