当任何用户登录时,我希望使用特定条件(where子句)更新我的表中的状态。
create or replace TRIGGER AUTO_COMPLETE
AFTER LOGON ON SCHEMA
BEGIN
UPDATE SESSIONS
SET SESSIONS.STATUS = 5
WHERE SESSIONS.STATUS =2
AND TO_CHAR(SESSIONS.SESSION_DATE, 'MM-DD-YYYY HH24.MM') < TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24.MM');
END AUTO_COMPLETE;不幸的是,这个触发器没有被触发,我没有错误!!
发布于 2021-03-22 15:53:06
顶点是无状态的,请参阅第一段here。这意味着为每个页面呈现或后期处理创建一个新的数据库会话。我认为这将使登录触发器在用户浏览应用程序时不断触发。
您可以在您的应用程序中创建一个点为“身份验证后”的应用程序进程。在用户进行身份验证后,它只会为应用程序触发一次。
将此功能与您的数据库分开是有意义的。登录触发器将在您通过sqldeveloper或通过rest连接时触发-它将影响性能。
发布于 2021-03-22 10:14:30
我认为最好的方法是在你的应用程序设置中,你可以通过用户绑定变量来验证用户名或其他东西。
Shared components / Security Attributes / Database Session

或者,另一种选择是在身份验证之后创建进程

https://stackoverflow.com/questions/66731628
复制相似问题