mysql - 在orders_id与更新过程相同的orders表上触发mysql
问题描述
我想更新表订单上的状态 = 1 当表上的订单状态 = 1 时,订单 ID = 订单 ID 与更新相同。
CREATE TRIGGER upd_check AFTER UPDATE ON orders_foods
FOR EACH ROW
BEGIN
IF (new.status= '1' where old.order_id=new.order_id) THEN
update orders
set status= '1'
where old.order_id=old.order_id
END IF;
END;
订单表 orders_foods 表
我不知道如何在更新过程中写入该 order_id 值以触发并使其与订单表上的 id 匹配
我的问题解决了
BEGIN
declare od_status_1 int default 0;
declare od_number int default 0;
select count(*) into od_number from orders_foods where orders_foods.order_id = new.order_id;
select count(*) into od_status_1 from orders_foods where orders_foods.order_id = new.order_id and orders_foods.status = 1;
if od_number = od_status_1 then
update orders
set status= '1'
where id=old.order_id;
end if;
结尾
感谢 P.Salmon
解决方案
尝试这个
Delimiter //
CREATE TRIGGER upd_check AFTER UPDATE ON orders_foods
FOR EACH ROW
BEGIN
IF (new.status= 1 and old.order_id=new.order_id) THEN
update orders
set status= 1
where id=old.order_id;
END IF;
END;
//
Delimiter ;
推荐阅读
- c++ - 在模板类的构造函数末尾调用的模板的析构函数
- python - 熊猫到二分图
- ios - 在我的 IOS 项目中,当我尝试删除桥接头文件时会导致错误?
- react-native - 有没有办法在 react-native-paper SearchBar 中获取键盘搜索/返回输入?
- php - 如何在php中创建增量文件夹名称
- code-coverage - WebTest 错误的覆盖率报告
- python - 只有在数据帧中的特定单词前面时才替换星号
- android - android片段中的注销按钮不起作用?科特林
- dax - 日期范围内的 DAX 计算执行不良
- azure - 如何在 Azure 中跟踪 VNet 集成的资源类型?