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.
获得
如何在 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.
获得