数据库插入/更新后更新应用程序项

时间:2019-10-06 10:20:07

标签: oracle-apex

当在数据库上更新一列时(插入/更新之后),我还想更新APEX应用程序中的应用程序项。我有一个带有两列的 producten (产品)表; voorraad (库存)和 min_voorraad (最小库存)。

当库存低于最低库存时,将向员工发出通知。但是它仅在手动刷新页面后更新。 This是通知铃声,如果库存已更新,则通知量也应更新而不刷新整个页面。

我尝试将其与触发器配合使用,但是我不知道如何更新应用程序项。这是触发代码:

CREATE OR REPLACE TRIGGER VOORRAAD_CHANGE_NOTIFICATION_TRIGGER
  AFTER INSERT OR UPDATE ON PRODUCTEN
BEGIN
  SELECT COUNT(*) INTO :NOTIFICATIONS_COUNT FROM PRODUCTEN WHERE VOORRAAD < MIN_VOORRAAD;
END;

申请项目的名称为 NOTIFICATIONS_COUNT

2 个答案:

答案 0 :(得分:0)

如果我理解您的问题,那么您想从已编译的PL / SQL代码访问APEX变量。 This Blogthese docs可能会有帮助。

Scott是对的-最好在APEX内使用Page Process来完成。抱歉,我错过了有关页面刷新的部分,仅关注触发器。 TY @Scott指出了这一点。 APEX文档here中的页面处理。

另外,根据汤姆·凯特(Tom Kyte)的出色文章The Trouble With Triggers,您确实应该警惕使用触发器。

答案 1 :(得分:0)

有两种方法可以做到这一点。

  1. websockets
  2. 使用计时器自动刷新

Websockets将是更漂亮的选择,但是它需要更多的编码和基础结构(Node.js)。我将使用一个JavaScript计时器来刷新该项目或包含该项目的区域。例如,这已经比我以前做的要好得多了:

https://community.oracle.com/thread/4182574

APEX 5.1 autorefresh Region with variable refresh time

希望这会有所帮助!