mysql - 订单后TRIGGER和选择查询产品列表的问题
问题描述
这是我的代码示例:
CREATE TABLE Customer(
CustID int not null,
primary key(CustID)
);
CREATE TABLE Products(
ProdID integer not null,
Quantity NUMERIC(3),
PRIMARY KEY(ProdID)
);
CREATE TABLE Orders(
Id INT not null,
Quantity NUMERIC(3),
Date date,
PRIMARY KEY(Id)
);
alter table Orders add OrdFK INT;
alter table Orders add constraint Ord_FK
foreign key (OrdFK) references Customer(CustID);
alter table Orders add ProdIdFK INT;
alter table Orders add constraint ProdId_FK
foreign key (ProdIdFK) references Products(ProdID);
insert into Products(ProdID, Quantity) values(1, 7);
CREATE TRIGGER QuantityUpdate
AFTER INSERT
ON Orders FOR EACH ROW
BEGIN
UPDATE Products p
SET p.Quantity = p.Quantity - New.Quantity
WHERE p.ProdID = New.ProdIDFK
END$$
DELIMITER ;
INSERT into Orders(Id, Quantity, Date, ProdIDFK, OrdFK) values(1, 2, '2020/01/27', 1, 1);
SELECT Quantity from Products where ProdID = 1;
然后它显示最初的产品数量,而不改变数量-2。我认为问题出在...
SET p.Quantity = p.Quantity - New.Quantity
WHERE p.ProdID = New.ProdIDFK
...但不知道到底出了什么问题:/ 我试图在 New.ProdID 上更改 New.ProdIdFK,但这并没有帮助。在 Orders 表中,ProdIdFK 引用 Products ProdID,OrdFK 引用 Costumers CustID。
解决方案
推荐阅读
- javascript - 为什么 Typescript 箭头函数属性可以访问这个
- rxjs - 我可以从 rxjs 中的现有流创建一个全新的流吗
- python - 如何从不同的 AAD 租户获取管理组和订阅?
- kotlin - 如何创建一个函数 (number: Int),它接受参数 num 作为数字,然后在以下条件下打印从 1 到 num 的数字:
- ios - UIViewControllerAnimatedTransitioning transitionsDuration 和 UIView.Animate
- python - PythonShellError:ModuleNotFoundError:没有名为“pandas”的模块
- docker - 无法在 docker 容器中运行脚本
- python - 如何使用 get_or_create 加载 json 数据?
- flutter - Flutter:按下按钮动画在按钮所在的容器后面
- scala - 升级到 Scala 2.13 给出 scalaoptions 错误