mysql - 删除后触发THEN UPDATE mysql

标签 mysql triggers

我想在删除orders_foods后触发

我的逻辑是:从orders_foods中删除,其中id=;id然后更新订单价格price = sum (orders_foods.price)其中id=orders_foods.order_id

这是我之前尝试过的代码,但出现错误#1363 -

Delimiter //  
CREATE TRIGGER ubah_tot_harga AFTER DELETE ON orders_foods
FOR EACH ROW
BEGIN
    DECLARE harga_1 int default 0;
     SELECT SUM(price) into harga_1 fROM `orders_foods` WHERE order_id = new.order_id;

     update  orders
      set price= harga_1
      where id=old.order_id;
      END
//
delimiter ;

orders table orders_foods table

最佳答案

您需要使用old.order_id,而不是new.order_id。因为删除后没有new.order_id,只有old.order_id。

Delimiter //  
CREATE TRIGGER ubah_tot_harga AFTER DELETE ON orders_foods
FOR EACH ROW
BEGIN
    DECLARE harga_1 int default 0;
     SELECT SUM(price) into harga_1 fROM `orders_foods` WHERE order_id = old.order_id;

     update  orders
      set price= harga_1
      where id=old.order_id;
      END
//
delimiter ;

关于mysql - 删除后触发THEN UPDATE mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229270/

相关文章:

php - 如何确定 MySQL UPDATE 是否确实与 WHERE 子句匹配任何行?

mysql - Spring多事务回滚

mysql - 扩展的 ASCII 字符在 MySQL 中显示为垃圾 通过 perl 插入数据库

mysql - 投标历史表触发器

javascript - jQuery - 单击文件输入的父项并触发文件输入的单击事件后,它返回 'too much recursion'

java - 使用 Maven 进行 Flyway Java 和 SQL 迁移

mysql - phpMyAdmin 每次都将我记录为新的 "cpses_****@localhost"用户。我怎样才能强制它是 "myuser@localhost"

sql - 插入、更新、删除后将数据输入到具有序列的日志表中的 PL/SQL 触发器

jquery - 我想在 jquery 中绑定(bind)键

entity-framework - 没有事务的 Entity Framework ?