sql >> Base de Datos >  >> RDS >> Oracle

Use v('APP_USER') como valor predeterminado para la columna en Oracle Apex

Hay otras opciones además de V('APP_USER'). Desde Apex 5, APP_USER se almacena en sys_context y tiene mucho más rendimiento que la función V(). Está disponible como SYS_CONTEXT('APEX$SESSION','APP_USER') .

También funciona como valor predeterminado para las tablas:

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

Table TEST_TABLE created.

Dicho esto, la mejor práctica para las columnas de auditoría es un disparador que llena las 4 columnas de auditoría (como sugirió @Littlefoot). Eche un vistazo a quicksql (en SQL Workshop> Utilities o en livesql.oracle.com). Puede hacer que genere los activadores si configura "incluir columnas de auditoría" y "Apex habilitado". Un ejemplo de un activador generado de este tipo es:

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