Im Juli 2016 wurde das Patch Set APEX 5.0.4 veröffentlicht. Ein guter Zeitpunkt um sich mal anzuschauen, wie viele Fehler in der Vergangenheit gefunden und behoben wurden.
Kategorien
Im Juli 2016 wurde das Patch Set APEX 5.0.4 veröffentlicht. Ein guter Zeitpunkt um sich mal anzuschauen, wie viele Fehler in der Vergangenheit gefunden und behoben wurden.
In Oracle-Funktionen und -Triggern hole ich mir den aktuellen Benutzer meistens über folgende Logik:
coalesce( sys_context('apex$session', 'app_user') , sys_context('userenv', 'os_user') , sys_context('userenv', 'session_user') );
Der Vorteil davon ist, dass das ganze sowohl mit APEX als auch unabhängig davon funktioniert.
Wenn ich die Wahl habe, erstelle ich eine Tabelle in Oracle-Datenbanken mit folgender Grundstruktur:
create table NEW_TABLE ( id number not null , my_column varchar2(200) , created_on date , created_by varchar2(200) , updated_on date , updated_by varchar2(200) ); create unique index NEW_TABLE_pk on NEW_TABLE (id asc); alter table NEW_TABLE add constraint NEW_TABLE_pk primary key (id) using index NEW_TABLE_pk enable; create sequence NEW_TABLE_seq increment by 1; create or replace trigger NEW_TABLE_trg before insert or update on NEW_TABLE for each row declare v_user varchar2(200); begin v_user := coalesce( sys_context('apex$session', 'app_user'), sys_context('userenv', 'os_user'), sys_context('userenv', 'session_user') ); if inserting then if :new.id is null then :new.id := NEW_TABLE_seq.nextval; end if; :new.created_on := sysdate; :new.created_by := v_user; :new.updated_on := sysdate; :new.updated_by := v_user; end if; if updating then :new.updated_on := sysdate; :new.updated_by := v_user; end if; end; / alter trigger NEW_TABLE_trg enable;