mysql - 在触发器中使用 join in update 命令
问题描述
我有 3 张桌子
'stockMedicina' (farmaciaID,seriemedicina,stock)
'Factura' (farmaciaid,facturaid)
'DetalleFactura' (facturaid,seriemedicina,cantidad)
当我向 detalleFactura 插入新值时,我想更新 stockMedicina 的库存,这是一个名为 stock 的 int。因此,当我在 detalleFactura 中插入一个新值时,我想更新factura 表上的farmaciaid 库存以减少库存量。我有这段代码,但它不起作用,我现在不知道该怎么办。:(
DELIMITER $$;
CREATE TRIGGER diminuirStock
AFTER INSERT ON detalleFactura
FOR EACH ROW
BEGIN
UPDATE stockmedicina sm
INNER JOIN factura fa ON sm.farmaciaid = fa.farmacia
INNER JOIN detalleFactura df ON sm.seriemedicina = df.seriemedicina AND fa.facturaID=df.facturaID
SET sm.stock = sm.stock - NEW.cantidad
WHERE sm.FarmaciaID = fa.Farmacia and sm.seriemedicina=NEW.facturaID
END$$
DELIMITER ;
任何关于它的想法或帮助都会非常有帮助:c
解决方案
您的某些列的列名错误
架构 (MySQL v8.0)
CREATE TABLE stockMedicina (farmaciaID INT,seriemedicina INT ,stock INT);
INSERT INTO stockMedicina VALUES (1,1,10);
CREATE TABLE Factura (farmaciaid INT, faturaid INT);
INSERT INTO Factura VALUES (1,1);
CREATE TABLE DetalleFactura (facturaid INT ,seriemedicina INT ,cantidad INT);
DELIMITER $$
CREATE TRIGGER diminuirStock
AFTER INSERT ON DetalleFactura
FOR EACH ROW
BEGIN
UPDATE stockMedicina sm
INNER JOIN Factura fa ON sm.farmaciaID = fa.farmaciaid
INNER JOIN DetalleFactura df ON sm.seriemedicina = df.seriemedicina AND fa.faturaid=df.facturaID
SET sm.stock = sm.stock - NEW.cantidad
WHERE sm.FarmaciaID = fa.farmaciaid and sm.seriemedicina=NEW.facturaid;
END$$
DELIMITER ;
INSERT INTO DetalleFactura VALUES (1,1,2)
查询 #1
SELECT * FROM stockMedicina;
| farmaciaID | seriemedicina | stock |
| ---------- | ------------- | ----- |
| 1 | 1 | 8 |
推荐阅读
- google-apps-script - 在 Google Script 中设置所选文本的背景颜色
- java - JUnit 5 测试类属性在每次测试之前为空
- flutter - Flutter Api 调用未处理异常
- python - UnboundLocalError:分配前引用的局部变量“嵌入”
- apache-kafka - Kafka Producer:发送消息后断开连接与保持连接打开
- vhdl - 函数内的 VHDL 计算
- javascript - (Javascript)给定间隔中的素数:for循环不迭代
- android - 如何为 xmpp 实现 smack
- cryptocurrency - Diem(前 Libra):创建帐户失败并显示“无法从验证器获取帐户,错误:航点值不匹配”
- python-3.x - 在 python 中不能安全地解释为整数