Ada opsi lain selain V('APP_USER'). Sejak Apex 5, APP_USER disimpan di sys_context dan itu jauh lebih berkinerja daripada fungsi V(). Ini tersedia sebagai SYS_CONTEXT('APEX$SESSION','APP_USER')
.
Ini juga berfungsi sebagai nilai default untuk tabel:
create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));
Table TEST_TABLE created.
Karena itu, praktik terbaik untuk kolom audit adalah pemicu yang mengisi 4 kolom audit (seperti yang disarankan @Littlefoot). Lihat quicksql (di bawah SQL Workshop> Utilities atau di livesql.Oracle.com). Anda dapat membuatnya menghasilkan pemicu untuk Anda jika Anda menyetel "sertakan kolom Audit" dan "Apex Diaktifkan". Contoh pemicu yang dihasilkan adalah:
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;
/