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

how to get last inserted record in a table?

我正在制作库存数据库项目以供学习的每个人purpose.i是开发新手,请帮助我。

我有两个 table

StockRecords(InventoriID, ItemID, Quantity)

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

我需要在新项目出现时更新库存 purchased.now 我需要调用 dml 触发器,但我很困惑如何在 table.[=12 中获取最后插入的值=]

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

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

换句话说,您需要修改当前的数据模型。 purchase_details table 似乎没有主键。如果是这样,并且它是由一个序列填充的,那么您将拥有该列 (MAX(primary_key_column)).

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

像这样:

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;

这也意味着您可能不需要您提到的 "procedure",如果唯一的目的是在 STOCKRECORDS table.[=16 中插入一行=]