首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一表MySQL 5.6上的Update触发器

问同一表MySQL 5.6上的Update触发器
EN

Stack Overflow用户
提问于 2020-05-16 01:32:37
回答 2查看 72关注 0票数 1

我有一个'foods‘表,其中有'featured’、'restaurant_id‘、'retaurant_stock’列。如何使用触发器或mySQL版本5.6上提供的任何其他解决方案,在条件下更新同一表上的'featured‘列后,更新列'restaurant_stock’?计算列在mySQL 5.6版上不可用。

这是我的触发器:

代码语言:javascript
复制
CREATE TRIGGER update_restaurant_stock BEFORE UPDATE ON foods
OR EACH ROW
BEGIN
IF NEW.featured = 1 THEN
UPDATE `foods` SET NEW.restaurant_stock = (NEW.restaurant_id);
ELSE
UPDATE `foods` SET NEW.restaurant_stock = 0;
END IF;
END

现在,当我更新'featured‘列时,我得到以下错误消息:

代码语言:javascript
复制
#1442 - Can't update table 'foods' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

​

​

感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-16 01:56:55

您不能以这种方式更新当前行,您可以使用set更改新值

代码语言:javascript
复制
DELIMITER $$
CREATE TRIGGER update_restaurant_stock BEFORE UPDATE ON foods
OR EACH ROW
BEGIN
IF NEW.featured = 1 THEN
    SET NEW.restaurant_stock = (NEW.restaurant_id);
ELSE
    SET NEW.restaurant_stock = 0;
END IF;
END$$
DELIMITER ;
票数 0
EN

Stack Overflow用户

发布于 2020-05-16 02:47:35

代码语言:javascript
复制
CREATE TRIGGER tr_bu_foods
BEFORE UPDATE 
ON foods
FOR EACH ROW
-- update restaurant_stock 
SET NEW.restaurant_stock = NEW.restaurant_id * (NEW.featured = 1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61825139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档