V('APP_USER') के अलावा और भी विकल्प हैं। एपेक्स 5 के बाद से, APP_USER sys_context में संग्रहीत है और यह V() फ़ंक्शन की तुलना में बहुत अधिक प्रदर्शन करने वाला है। यह SYS_CONTEXT('APEX$SESSION','APP_USER')
के रूप में उपलब्ध है ।
यह तालिकाओं के लिए डिफ़ॉल्ट मान के रूप में भी कार्य करता है:
create table test_table
(col_1 VARCHAR2(100) DEFAULT SYS_CONTEXT('APEX$SESSION','APP_USER'));
Table TEST_TABLE created.
कहा जा रहा है, ऑडिट कॉलम के लिए सबसे अच्छा अभ्यास एक ट्रिगर है जो 4 ऑडिट कॉलम को पॉप्युलेट करता है (जैसा कि @Littlefoot ने सुझाया है)। Quicksql पर एक नज़र डालें (एसक्यूएल वर्कशॉप> यूटिलिटीज के तहत या livesql.oracle.com पर)। यदि आप "ऑडिट कॉलम शामिल करें" और "एपेक्स इनेबल्ड" सेट करते हैं, तो आप इसे अपने लिए ट्रिगर जेनरेट कर सकते हैं। ऐसे उत्पन्न ट्रिगर का एक उदाहरण है:
प्रत्येक पंक्ति के लिए कर्मचारियों पर डालने या अपडेट करने से पहले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;
/