我正在尝试创建一个存储过程,如果库存足够,尝试更新订单,但是当尝试更新时(但只有在程序中完成)我才会收到错误
“15:20:05调用plswork(@LatestOrder,2,20)错误代码:1109。字段列表中的未知表'产品'0.000秒”
到目前为止,我试图查看表名和表键是否有任何错误。我也尝试在程序之外进行更新,这里有效。
Delimiter ¤
create procedure plswork(
in NewOrder INT,
in ProductID INT,
in PurchaseQuantity INT)
begin
start transaction;
insert into Order_items(Oid, Pid, Quantity)
values (NewOrder, ProductID, PurchaseQuantity);
update Product p
set p.Stock = p.Stock - PurchaseQuantity
where p.Pid = p.ProductID;
if((select Product.Stock
where Pid = ProductID) < 0) then
rollback;
else
commit;
end if;
end ¤
Delimiter ;
INSERT INTO Orders(Cid,Order_date, Order_status)
VALUES (1, '2040-01-31 12:11:00' , "SENT");
select @LatestOrder := max(Oid)
from Orders;
call plswork(@LatestOrder, 2, 20);
我该怎么做才能解决我的问题?
我不认为错误来自UPDATE
声明。
我认为这个SQL语句会引发错误:
select Product.Stock where Pid = ProductID
没有FROM
条款,所以Stock
与表名Product
无效。