table oracle apex 应用程序会话到期后更新

table updation after expiring oracle apex application session

如何在 apex 申请会话过期后更新我的 table? 我想在当前会话过期后自动执行以下代码。

update users set logn='N' where u_name=app_user;
commit;

还有吗?

APEX 会话过期时实际上什么也没有发生。但是,如果用户再次尝试使用该会话,则会检查它是否已过期。所以没有可以挂起更新的事件。

您可以做的是让 DBMS_SCHEDULER 作业定期运行并检查每个 "logged in" 用户是否有任何未过期的 APEX 会话;如果不是,则将它们设置为 "not logged in"。类似于:

update users u
set    u.logn = 'N'
where  u.logn = 'Y'
and not exists (select null
                from   apex_workspace_sessions aws
                where  aws.user_name = u.u_name
                and    aws.session_idle_timeout_on > sysdate
              );

试图跟踪 APEX 用户是否 "logged in" 实际上是徒劳的 - 他们可能在没有 "logging out" 的情况下关闭了他们的笔记本电脑,因此将显示为 "logged in" 直到他们会话过期并且此作业运行。可能更有用的信息是了解它们上次 活动 的日期和时间,您可以从 APEX_WORKSPACE_ACTIVITY_LOG.

获得