mysql trigger触发器 一张表一个字段改变 更新另一张表对应字段

触发器语句先贴出来:

DELIMITER $$
CREATE TRIGGER goods_sku_shopprice_trigger AFTER UPDATE ON t_sku FOR EACH ROW
BEGIN
SET @oldPrice = (SELECT t_goods.shop_price FROM t_goods WHERE t_goods.goods_id=new.goods_id LIMIT 1);
IF new.shop_price<@oldPrice THEN 
UPDATE t_goods SET t_goods.shop_price=new.shop_price WHERE t_goods.goods_id=new.goods_id;

END IF; 

END $$
DELIMITER ;

注意点1:select t_goods.shop_price from t_goods where t_goods.goods_id=new.goods_id limit 1;不能直接用作表达式比较,因为语句很多可能返回多个值。应该将结果赋值给一个变量@oldPrice然后比较。

错误示范:new.shop_price<(SELECT t_goods.shop_price FROM t_goods WHERE new.goods_id=t_goods.goods_id LIMIT 0,1)
正确示范:new.shop_price<@oldPrice

注意点2:给变量赋值时如果赋值结果是由sql语句查询而来记得sql语句加括号,否则也会出错。

错误示范:set @oldPrice = select t_goods.shop_price from t_goods where t_goods.goods_id=new.goods_id limit 1;

正确示范:set @oldPrice = (select t_goods.shop_price from t_goods where t_goods.goods_id=new.goods_id limit 1);

注意点3:begin 和 end之前是语句,就像其它编程语言一样。因此每一句写完记得加分号结尾。

猜你喜欢

转载自blog.csdn.net/lei_da_gou/article/details/80694859