Oracle
 sql >> Database >  >> RDS >> Oracle

Utilizzare v('APP_USER') come valore predefinito per la colonna in Oracle Apex

Ci sono altre opzioni oltre a V('APP_USER'). Da Apex 5, APP_USER è archiviato in sys_context ed è molto più performante della funzione V(). È disponibile come SYS_CONTEXT('APEX$SESSION','APP_USER') .

Funziona anche come valore predefinito per le tabelle:

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

Table TEST_TABLE created.

Detto questo, la migliore pratica per le colonne di audit è un trigger che popola le 4 colonne di audit (come suggerito da @Littlefoot). Dai un'occhiata a quicksql (sotto SQL Workshop> Utilities o su livesql.oracle.com). Puoi fare in modo che generi i trigger per te se imposti "includi colonne di controllo" e "Apex abilitato". Un esempio di un tale trigger generato è:

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