sql >> Databáze >  >> RDS >> Oracle

Použijte v('APP_USER') jako výchozí hodnotu pro sloupec v Oracle Apex

Existují i ​​jiné možnosti než V('APP_USER'). Od Apexu 5 je APP_USER uložen v sys_context a to je mnohem výkonnější než funkce V(). Je k dispozici jako SYS_CONTEXT('APEX$SESSION','APP_USER') .

Funguje také jako výchozí hodnota pro tabulky:

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

Table TEST_TABLE created.

Jak již bylo řečeno, nejlepším postupem pro sloupce auditu je spouštěč, který vyplní 4 sloupce auditu (jak navrhl @Littlefoot). Podívejte se na quicksql (pod SQL Workshop> Utilities nebo na livesql.oracle.com). Můžete si nechat vygenerovat spouštěče za vás, pokud nastavíte „zahrnout sloupce auditu“ a „Apex povoleno“. Příkladem takto generovaného spouštěče je:

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. Knihovna není načtena:@rpath/libmysqlclient.21.dylib Důvod:obrázek nebyl nalezen Chyba migrace Django pomocí ovladače mysqlclient DB a MySQL 8 s macOS

  2. Najděte porušení cizího klíče v SQLite

  3. mySQL nastaví varchar bez speciálních znaků

  4. Jak zkrátit tabulku s omezením cizího klíče?