如果另一个表列值变为零,如何更新一个表的列在Oracle中?

时间:2016-12-08 05:48:44

标签: oracle plsql oracle-apex

我有两张表 ITEM Menu_Id,Menu_Status )&的 STOCK STOCK_ID,Menu_Id,Stock_Quantity )。

现在,当 STOCK表值的Stock_Quantity列为零时,我想更新 ITEM表的Menu_Status列。 我还在Oracle Apex 5.0上实现了这一点。

我想在数据库的后端处理这个,当客户订单和Stock_Quantity根据订购数量的数量减去( - )。

哪一个更好?触发还是程序?请提供代码帮助我。 https://stackoverflow.com/posts/41027321/revisions

我尝试了这段代码,但有ORA-24344:成功编译错误信息!

create or replace trigger "KITCHEN_T11"
AFTER
insert or update on "KITCHEN"
for each row
when (NEW.quantity<= 0)
begin
declare
mid number;
begin
select m_id into mid from kitchen where k_id=:new.k_id;
update menu_item set status=0 where m_id=mid;
end;
end;

2 个答案:

答案 0 :(得分:0)

无论如何,您应该编写一个更新项目表的过程。唯一需要做的就是从哪里调用它。

如果您知道所有正在更新库存表的过程,并且此过程可以放在那里,那么这将是最佳选择。

如果不可能,您可以从触发器调用此过程。

答案 1 :(得分:0)

CREATE OR REPLACE TRIGGER  "STOCK_T1" 
AFTER
insert or update on "STOCK"
for each row
 WHEN (NEW.stock_quantity<= 0)

begin
update item set menu_status=0 where menu_id=:NEW.MENU_ID;
end;