【发布时间】:2018-03-02 11:33:50
【问题描述】:
如何在 apex 应用程序会话过期后更新我的表? 我想在当前会话过期后自动执行以下代码。
update users set logn='N' where u_name=app_user;
commit;
还有吗?
【问题讨论】:
如何在 apex 应用程序会话过期后更新我的表? 我想在当前会话过期后自动执行以下代码。
update users set logn='N' where u_name=app_user;
commit;
还有吗?
【问题讨论】:
当 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 获得。
【讨论】: