Harus dipisahkan dulu dengan jelas, mana user aplikasi dan mana user
database.
User aplikasi tentu saja tidak dikenali di database, jadi mis. ada statement
CREATE TABLE audit_table (
dml_oper VARCHAR2(8),
changed_by VARCHAR2(20) DEFAULT USER);
maka user yg dimaksud adalah user database.
Karena koneksi aplikasi ke database menggunakan user A, maka siapapun yg
koneksi via aplikasi akan dianggap sebagai user A.
Jika demikian, bagaimana cara merecord user aplikasi di trigger?
Salah satu cara (jika object database masih bisa dimodifikasi) adalah
dengan menambah satu kolom di table (pemicu trigger) yg berisi informasi
user aplikasi. Kolom ini yg akan digunakan untuk mengisi kolom user di
table audit.
Mis. ada sebuah table:
SQL>DESC my_table
Name Null? Type
----------------------------------------- -------- ------------
col_id NOT NULL NUMBER
col_name VARCHAR2(30)
user_app VARCHAR2(20) --
tambahkan kolom ini
Dengan trigger:
CREATE OR REPLACE TRIGGER audit_trig
AFTER UPDATE OR DELETE OR INSERT
ON my_table
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO audit_table('INSERT',:NEW.user_app);
...
..
END IF;
END;
/
rgds,
AH
Andes Febrian wrote:
>
> Dear gurus,
>
> saya punya application server 10Release 3 (OC4J server) mengkases database
> A. Aplikasi OC4J ini bila mengkases database menggunakan satu user(schema)
> yaitu user(schema) A.
> kemudian bila user mau mengakses aplikasi OC4J, user masukkan username dan
> password mereka di aplikasi tersebut. ada 100 user dgn IP yg berbeda2 dan
> login ke aplikasi dgn username masing2. seperti, sinta, santi, tuti dll.
>
> yg saya mau tanyakan, bila saya mengaudit table B pada database A dgn
> trigger, maka ketika aplikasi select data atau mengupdate atau delete data
> di database, yg terlihat adalah user(schema) A(si aplikasi OC4J). tp user2
> yg login ke aplikasi dgn user masing2 tidak dibaca oleh database.
>
> bagaimana kah supaya database tetap membaca user sinta, santi, tuti dll
> bukan user(schema) A ?
>
> maaf bila kurang jelas maksud saya, saya kasih gambaran seperti ini :
> tuti ---------->
> sinta ----------> (connect dgn schema A)
> santi ----------> OC4J -----------> DATABASE A
> doni ----------> (database hanya membaca satu schema, yaitu
> schema A)
> joko ---------->
> (login dgn
> username
> masing2)
>
> mohon pencerahannya, terima kasih.
>
> --
> Cheers,
> ^_^ Andes ^_^
>
> [Non-text portions of this message have been removed]
>
>