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

时间:2018-02-28 20:47:39

标签: relational-database oracle-sqldeveloper oracle-apex inventory-management

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

我有两张桌子

StockRecords(InventoriID, ItemID, Quantity)

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

这样的事情:

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;

这也意味着你可能不需要那个"程序"你提到过,ifs的唯一目的是在STOCKRECORDS表中插入一行。