sql >> Databasteknik >  >> RDS >> Oracle

Använd v('APP_USER') som standardvärde för kolumn i Oracle Apex

Det finns andra alternativ än V('APP_USER'). Sedan Apex 5 lagras APP_USER i sys_context och det är mycket mer presterande än V()-funktionen. Den är tillgänglig som SYS_CONTEXT('APEX$SESSION','APP_USER') .

Det fungerar också som ett standardvärde för tabeller:

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

Table TEST_TABLE created.

Med det sagt, den bästa praxisen för granskningskolumner är en utlösare som fyller de fyra granskningskolumnerna (som @Littlefoot föreslog). Ta en titt på quicksql (under SQL Workshop> Utilities eller på livesql.oracle.com). Du kan få den att generera utlösare åt dig om du ställer in "inkludera granskningskolumner" och "Apex aktiverad". Ett exempel på en sådan genererad trigger är:

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. Hur kan jag lösa ett NoClassDefFoundError?

  2. PostgreSQL Update trigger

  3. PHP/MYSQL tillåter endast en röst per medlem?

  4. UTF-8:visas korrekt i databasen, dock inte i HTML trots utf-8 teckenuppsättning