Det finns andra alternativ än V('APP_USER'). Sedan Apex 5 lagras APP_USER i sys_context och det är mycket mer presterande än V()-funktionen. Den är tillgänglig som SYS_CONTEXT('APEX$SESSION','APP_USER')
.
Det fungerar också som ett standardvärde för tabeller:
create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));
Table TEST_TABLE created.
Med det sagt, den bästa praxisen för granskningskolumner är en utlösare som fyller de fyra granskningskolumnerna (som @Littlefoot föreslog). Ta en titt på quicksql (under SQL Workshop> Utilities eller på livesql.oracle.com). Du kan få den att generera utlösare åt dig om du ställer in "inkludera granskningskolumner" och "Apex aktiverad". Ett exempel på en sådan genererad trigger är:
create or replace trigger employees_biu
before insert or update
on employees
for each row
begin
if inserting then
:new.created := sysdate;
:new.created_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
end if;
:new.updated := sysdate;
:new.updated_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
end employees_biu;
/