Discussions
Categories
- 197K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.8K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 556 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.4K SQL Developer
- 296.4K Development
- 17 Developer Projects
- 139 Programming Languages
- 293.1K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 161 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 474 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
Apex 4.2 and Database trigger issue:APEX_PUBLIC_USER instead of APEX user

I have an application in Apex 4.2 that contains a page with a form to submit data to a table. This table has a trigger "BEFORE INSERT OR UPDATE ON MY_TABLE FOR EACH ROW" used to get user and date.
Now, for each record I add using that page and form the trigger is saving into :NEW.user_ins this value "APEX_PUBLIC_USER".
IF INSERTING THEN :NEW.dt_ins := SYSDATE; IF :NEW.user_ins IS NULL THEN :NEW.user_ins := nvl(wwv_flow.g_user,user); END IF; END IF;
Page is not public so I think there's not reason to use that value.
Does anyone know the reason of this?
Sergio
Answers
-
Sergio Vega wrote: I have an application in Apex 4.2 that contains a page with a form to submit data to a table. This table has a trigger "BEFORE INSERT OR UPDATE ON MY_TABLE FOR EACH ROW" used to get user and date. Now, for each record I add using that page and form the trigger is saving into :NEW.user_ins this value "APEX_PUBLIC_USER".
- IF INSERTING THEN
- :NEW.dt_ins := SYSDATE;
- IF :NEW.user_ins IS NULL THEN
- :NEW.user_ins := nvl(wwv_flow.g_user,user);
- END IF;
- END IF;
IF INSERTING THEN :NEW.dt_ins := SYSDATE; IF :NEW.user_ins IS NULL THEN :NEW.user_ins := nvl(wwv_flow.g_user,user); END IF; END IF;
Page is not public so I think there's not reason to use that value.
Does anyone know the reason of this?
I would assume that it is due to the use of the undocumented and unsupported expression
wwv_flow.g_user
in the trigger. For whatever reason—undocumented features are subject to change or removal without notice—the value of this expression is presumably null at the time it is evaluated, leading to the NVL returning the database USER instead. Use the documented APP_USER built-in (and COALESCE instead of NVL for a tiny performance improvement):IF INSERTING THEN :NEW.dt_ins := SYSDATE; IF :NEW.user_ins IS NULL THEN :NEW.user_ins := coalesce(v('APP_USER'), user); END IF; END IF;
-
Hello,
Documented alternative for wwv_flow.g_user is APEX_APPLICATION.G_USER.
to me, issue looks like something else. What's your authentication scheme? How are you submitting the form? Is this ARP form or you have written custom pl/sql to insert data?
Please provide more info.
Regards,
Hari
-
Thanks. I have modified the trigger but problem stills.
-
Hi Hari,
I I'm using a page created with the wizard (automatic row fetch, automatic row processing) without including column USER_INS so the trigger will fill it.
Security attributes of the application are:
Sergio
-
Hi Sergio,
Can you try v('APP_USER') option (as pointed by fac586)
Regards,
Hari
-
Tried, but problem stills.