Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verwenden Sie v('APP_USER') als Standardwert für die Spalte in Oracle Apex

Es gibt andere Optionen als V('APP_USER'). Seit Apex 5 wird der APP_USER im sys_context gespeichert und das ist viel performanter als die V()-Funktion. Es ist verfügbar als SYS_CONTEXT('APEX$SESSION','APP_USER') .

Es funktioniert auch als Standardwert für Tabellen:

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

Table TEST_TABLE created.

Davon abgesehen ist die Best Practice für Audit-Spalten ein Trigger, der die 4 Audit-Spalten füllt (wie von @Littlefoot vorgeschlagen). Schauen Sie sich quicksql an (unter SQL Workshop> Utilities oder auf livesql.oracle.com). Sie können die Auslöser für Sie generieren lassen, wenn Sie „Überwachungsspalten einschließen“ und „Apex aktiviert“ festlegen. Ein Beispiel für einen solchen generierten Trigger ist:

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