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

时间:2019-03-27 14:55:30

标签: mysql

我正在尝试创建一个存储过程,如果存货充足,该过程将尝试更新订单,但是,当尝试进行更新时(但仅限于在过程中完成),我会收到错误消息

” 15:20:05呼叫plswork(@LatestOrder,2,20)错误代码:1109。字段列表中的未知表'Product'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);

该如何解决我的问题?

1 个答案:

答案 0 :(得分:0)

我认为错误不是来自UPDATE语句。

我认为此SQL语句将引发错误:

 select Product.Stock where Pid = ProductID

没有FROM子句,因此用表名Stock限定Product无效。