我正在尝试创建一个存储过程,如果存货充足,该过程将尝试更新订单,但是,当尝试进行更新时(但仅限于在过程中完成),我会收到错误消息
” 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);
该如何解决我的问题?
答案 0 :(得分:0)
我认为错误不是来自UPDATE
语句。
我认为此SQL语句将引发错误:
select Product.Stock where Pid = ProductID
没有FROM
子句,因此用表名Stock
限定Product
无效。