Existují i jiné možnosti než V('APP_USER'). Od Apexu 5 je APP_USER uložen v sys_context a to je mnohem výkonnější než funkce V(). Je k dispozici jako SYS_CONTEXT('APEX$SESSION','APP_USER')
.
Funguje také jako výchozí hodnota pro tabulky:
create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));
Table TEST_TABLE created.
Jak již bylo řečeno, nejlepším postupem pro sloupce auditu je spouštěč, který vyplní 4 sloupce auditu (jak navrhl @Littlefoot). Podívejte se na quicksql (pod SQL Workshop> Utilities nebo na livesql.oracle.com). Můžete si nechat vygenerovat spouštěče za vás, pokud nastavíte „zahrnout sloupce auditu“ a „Apex povoleno“. Příkladem takto generovaného spouštěče je:
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;
/