如何在表中获取最后插入的记录?

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

我正在制作一个用于学习目的的库存数据库项目。我是开发新手,请帮助我。

我有两张桌子

StockRecords(InventoriID, ItemID, Quantity)

Purchase_Details(SupplierID, supplier_invoice, itemID, quantity, purchase_date)

我需要在购买新商品时更新库存。现在我需要调用dml触发器,但我很困惑如何获取表中的最后一个插入值。

我写了一个程序,我打算在触发器中调用更新StockRecord表,但我需要在表Purchase_Detail中找到最后一个插入的值,这样我就可以解析我的过程中的itemID和最后一个条目的数量来更新记录表。

relational-database oracle-sqldeveloper oracle-apex inventory-management
1个回答
0
投票

只有一列看起来像是候选人:purchase_date,如果它代表购买东西的最后日期。在这种情况下,你必须找到一个MAX(purchase_date)行。但是,如果该列中存储了多个具有相同值的行,则表示运气不佳。

换句话说,您需要修改当前数据模型。看来purchase_details表没有主键。如果确实如此,如果它由一个序列填充,那么你就有了那个列(MAX(primary_key_column))。

另一方面,说有一个触发器涉及:如果它为每一行触发,那么你可以使用:new(或:old,取决于你所做的)伪记录标识符和 - 基本上 - 不关心最后一行插入行 - 你将处理当前的行。

像这样的东西:

create or replace trigger trg_ai_purdet
  after insert on purchase_details
  for each row
begin
  insert into stockrecords (inventoriid, itemid, quantity)
  values (some_seq.nextval, :new.itemid, :new.quantity);
end;

这也意味着你可能不需要你提到的那个“程序”,如果只是为了在STOCKRECORDS表中插入一行。

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