Discussions
Categories
- 196.9K All Categories
- 2.2K Data
- 239 Big Data Appliance
- 1.9K Data Science
- 450.4K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 546 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.9K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.6K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 155 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 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
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 442 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 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.