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

Brug v('APP_USER') som standardværdi for kolonne i Oracle Apex

Der er andre muligheder end V('APP_USER'). Siden Apex 5 er APP_USER gemt i sys_context, og det er meget mere effektiv end V()-funktionen. Den er tilgængelig som SYS_CONTEXT('APEX$SESSION','APP_USER') .

Det fungerer også som en standardværdi for tabeller:

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

Table TEST_TABLE created.

Når det er sagt, er den bedste praksis for revisionskolonner en trigger, der udfylder de 4 revisionskolonner (som @Littlefoot foreslog). Tag et kig på quicksql (under SQL Workshop> Utilities eller på livesql.oracle.com). Du kan få det til at generere triggerne for dig, hvis du indstiller "inkluder revisionskolonner" og "Apex aktiveret". Et eksempel på en sådan genereret trigger er:

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. Indsæt til alle celler, når poster er mere end én PHP

  2. Hibernate, C3P0, Mysql -- Broken Pipe

  3. Logical Processing Order eller SQL Standard i WHERE-klausul

  4. MySQL, skal vælge rækker, der har de hyppigste værdier i en anden tabel