更新表条目告诉我该过程中不存在该表

问题描述 投票:1回答:1

我正在尝试创建一个存储过程,如果库存足够,尝试更新订单,但是当尝试更新时(但只有在程序中完成)我才会收到错误

“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);

我该怎么做才能解决我的问题?

mysql
1个回答
0
投票

我不认为错误来自UPDATE声明。

我认为这个SQL语句会引发错误:

 select Product.Stock where Pid = ProductID

没有FROM条款,所以Stock与表名Product无效。

© www.soinside.com 2019 - 2024. All rights reserved.