如何获取 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 中插入一行=]
我正在制作库存数据库项目以供学习的每个人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 中插入一行=]