对item表建立一个插入触发器tr_itemInsert可以联动修改orders表中的信息。执行插入数据到item表前先检查order表中有没有该订单信息当order表中还没有对应订单信息时先添加一条对应的订单信息当已有订单时更新订单的数量
和总价,并将修改后的订单信息更新到orders表中。
具体实现如下:
CREATE TRIGGER tr_itemInsert BEFORE INSERT ON item FOR EACH ROW BEGIN DECLARE order_id INT; DECLARE total_price DECIMAL(10,2); DECLARE item_price DECIMAL(10,2); DECLARE item_quantity INT;
-- 检查orders表中是否已有该订单信息
SELECT id, total_price INTO order_id, total_price FROM orders WHERE id = NEW.order_id;
-- 如果orders表中没有该订单信息,则添加一条新的订单信息
IF order_id IS NULL THEN
INSERT INTO orders (id, total_price, created_at, updated_at)
VALUES (NEW.order_id, NEW.price * NEW.quantity, NOW(), NOW());
-- 如果orders表中已有该订单信息,则更新订单的数量和总价
ELSE
SELECT price, quantity INTO item_price, item_quantity FROM item WHERE id = NEW.id;
UPDATE orders SET total_price = total_price + (NEW.price * NEW.quantity) - (item_price * item_quantity), updated_at = NOW() WHERE id = NEW.order_id;
END IF;
END
原文地址: https://www.cveoy.top/t/topic/g7qX 著作权归作者所有。请勿转载和采集!