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

问题描述 投票:0回答:1

如何在顶点应用程序会话到期后更新我的表?我想在当前会话到期后自动执行以下代码。

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

反正呢?

oracle-apex oracle-apex-5
1个回答
2
投票

APEX会话到期时实际上什么也没发生。但是,如果用户再次尝试使用会话,则会进行检查以查看其是否已过期。因此,没有任何事件可以挂起您的更新。

你可以做的是有一个定期运行的DBMS_SCHEDULER作业,并检查每个“登录”用户是否有任何未到期的APEX会话;如果没有,则将它们设置为“未登录”。就像是:

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用户是否“登录”实际上是徒劳无功的 - 他们可能已经关闭了他们的笔记本电脑而没有“退出”,因此将显示为“登录”,直到他们的会话到期并且此作业运行。可能更有用的信息是知道它们上次活动的日期和时间,您可以从APEX_WORKSPACE_ACTIVITY_LOG获取。

© www.soinside.com 2019 - 2024. All rights reserved.