Mysql 订单后产品列表的触发器和选择查询问题

Mysql 订单后产品列表的触发器和选择查询问题,mysql,triggers,Mysql,Triggers,这是我的代码示例: 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 K

这是我的代码示例:

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 

…但不知道到底出了什么问题:/I我试图在New.ProdID上更改New.ProdIdFK,但没有任何帮助。在订单表中,ProdIdFK引用了产品ProdID,OrdFK引用了客户的CustID。

无法复制。为什么要使用数字作为十进制数据类型?在本例中,精度为0的十进制表示数据类型应该是整数,可能代码不是mysql。我设置了INT,设置了NUMERIC,这都无关紧要,在这两种情况下都不会发生任何事情:/not reproductive。为什么要使用数字作为十进制数据类型?在本例中,精度为0的十进制表示数据类型应为整数,并且可能代码不是mysql。我设置INT,设置NUMERIC,这无关紧要,在这两种情况下都不会发生任何事情:/