sql >> データベース >  >> RDS >> Oracle

Oracle Apexの列のデフォルト値としてv('APP_USER')を使用します

    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;
    /
    


    1. 重複する予約クエリ

    2. mysql_data_seekpdoと同等

    3. PLSQL JDBC:最後の行IDを取得する方法は?

    4. Pythonでのintからdatetimeまで