Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Use v('APP_USER') como valor padrão para coluna no Oracle Apex


Existem outras opções além de V('APP_USER'). Desde o Apex 5, o APP_USER é armazenado no sys_context e isso tem muito mais desempenho do que a função V(). Está disponível como SYS_CONTEXT('APEX$SESSION','APP_USER') .

Também funciona como um valor padrão para tabelas:
create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));

Table TEST_TABLE created.

Dito isto, a melhor prática para colunas de auditoria é um gatilho que preenche as 4 colunas de auditoria (como sugerido pelo @Littlefoot). Dê uma olhada no quicksql (em SQL Workshop> Utilities ou em livesql.oracle.com). Você pode fazer com que ele gere os gatilhos para você se definir "incluir colunas de auditoria" e "Apex ativado". Um exemplo de um gatilho gerado é:
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;
/