Oracle
 sql >> Base de données >  >> RDS >> Oracle

Utiliser v('APP_USER') comme valeur par défaut pour la colonne dans Oracle Apex

Il existe d'autres options que V('APP_USER'). Depuis Apex 5, APP_USER est stocké dans le sys_context et c'est beaucoup plus performant que la fonction V(). Il est disponible en tant que SYS_CONTEXT('APEX$SESSION','APP_USER') .

Cela fonctionne également comme valeur par défaut pour les tableaux :

create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));

Table TEST_TABLE created.

Cela étant dit, la meilleure pratique pour les colonnes d'audit est un déclencheur qui remplit les 4 colonnes d'audit (comme suggéré par @Littlefoot). Jetez un œil à quicksql (sous SQL Workshop> Utilities ou sur livesql.oracle.com). Vous pouvez lui faire générer les déclencheurs pour vous si vous définissez "inclure les colonnes d'audit" et "Apex activé". Un exemple d'un tel déclencheur généré est :

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