2017-09-19 89 views
0

實際上,我在創建插入或更新或刪除觸發器之前創建一個表IMP_CUSTOMER並將已更新,插入或刪除的數據集記錄到表LOG_IMP_CUSTOMER。一切工作正常,但我只是缺少一點:哪個模式已經完成插入,更新或刪除

表中的數據可以由不同的數據庫用戶更改,我試圖讓已經完成表上的變化的用戶登錄到我的日誌表。

這是我的觸發直到如今

CREATE OR REPLACE TRIGGER TRG_LOG_IMP_CUSTOMER 
BEFORE INSERT OR UPDATE OR DELETE ON IMP_CUSTOMER 
REFERENCING OLD AS old_buffer NEW AS new_buffer FOR EACH ROW 
DECLARE 
log_date TIMESTAMP; 
sql_type VARCHAR(1); 
log_user VARCHAR(10); 
BEGIN 
-- set log_date 
log_date := SYSDATE; 

-- set sql_type 
IF INSERTING THEN sql_type := 'I'; 
END IF; 
IF UPDATING THEN sql_type := 'U'; 
END IF; 
IF DELETING THEN sql_type := 'D'; 
END IF; 

-- set log_user 
log_user := 'USER'; -- hardcoded for test 

-- log update and delete 
IF UPDATING OR DELETING THEN 
    INSERT INTO LOG_IMP_CUSTOMER VALUES (:old_buffer.CIF_ID,:old_buffer.PHONE_NUMBER,:old_buffer.PHONE_AREACODE,SEQ_LOG_IMP_CUSTOMER.nextval,log_date,sql_type,log_user); 
END IF; 

-- log insert 
IF INSERTING THEN 
    INSERT INTO LOG_IMP_CUSTOMER VALUES 
    (:new_buffer.CIF_ID,:new_buffer.PHONE_NUMBER,:new_buffer.PHONE_AREACODE,SEQ_LOG_IMP_CUSTOMER.nextval,log_date,sql_type,log_user); 
END IF; 
END; 
/

我只是在尋找任何方式設置log_user到已經做了更改的用戶。

一些好主意?

感謝和問候, 大衛

+2

只要刪除引號:'log_user:= USER;' –

回答

0

您可以編輯像下面。

log_user := sys_context('USERENV','SESSION_USER'); 
相關問題