V('APP_USER')以外のオプションがあります。 Apex 5以降、APP_USERはsys_contextに格納されており、V()関数よりもはるかにパフォーマンスが高くなっています。 SYS_CONTEXT('APEX$SESSION','APP_USER')
として利用できます。 。
テーブルのデフォルト値としても機能します:
create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));
Table TEST_TABLE created.
そうは言っても、監査列のベストプラクティスは、4つの監査列にデータを入力するトリガーです(@Littlefootが提案したように)。 quicksqlをご覧ください(SQLワークショップ>ユーティリティまたはlivesql.oracle.comの下)。 「監査列を含める」と「Apexを有効にする」を設定すると、トリガーを生成させることができます。このような生成されたトリガーの例は次のとおりです。
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;
/