sql >> Database >  >> RDS >> Oracle

Gebruik v('APP_USER') als standaardwaarde voor kolom in Oracle Apex

Er zijn andere opties dan V('APP_USER'). Sinds Apex 5 wordt de APP_USER opgeslagen in de sys_context en dat is een stuk performanter dan de V()-functie. Het is beschikbaar als SYS_CONTEXT('APEX$SESSION','APP_USER') .

Het werkt ook als een standaardwaarde voor tabellen:

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

Table TEST_TABLE created.

Dat gezegd hebbende, de beste werkwijze voor controlekolommen is een trigger die de 4 controlekolommen vult (zoals @Littlefoot suggereerde). Kijk eens naar quicksql (onder SQL Workshop> Utilities of op livesql.oracle.com). U kunt het de triggers voor u laten genereren als u "controlekolommen opnemen" en "Apex ingeschakeld" instelt. Een voorbeeld van zo'n gegenereerde trigger is:

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. Linker join of selecteer uit meerdere tabellen met komma (,)

  2. Postgres - Is dit de juiste manier om een ​​gedeeltelijke index op een booleaanse kolom te maken?

  3. Een Oracle-database migreren van AWS EC2 naar AWS RDS, deel 4

  4. SQLAlchemy-fout MySQL-server is verdwenen