안녕하세요 삭제 트리거 질문이 있는데요.
create or replace trigger A_TABLE_BACKUP_T2
after delete on A_TABLE
for each row
begin
insert into A_TABLE_BACKUP(
CHK,
WHO,
OLDCOMPANYID)
VALUES(
'D', <-- 삭제 flag
user, <-- 삭제한 user
:old.COMPANYID
);
END;
위 형식으로 트리거를 생성을 했는데
user 로 넣으니까 system 명이 들어가더라고요.
저는 누가 삭제했는지 알고 싶은데 이 경우 방법이 있을까요?
일단 데이터를 삭제하는 방법은 특정 시스템 UI 에서 수행 -> 패키지 -> 프로시져 -> 트리거 이런식으로 흘러갑니다.
감사합니다.
트리거로 하실경우
SYS_CONTEXT('USERENV', 'SESSION_USER')
SYS_CONTEXT('USERENV', 'OS_USER')
SYS_CONTEXT ('USERENV', 'HOST')
SYS_CONTEXT ('USERENV','MODULE')
SYS_CONTEXT ('USERENV', 'TERMINAL')
SYS_CONTEXT('USERENV', 'IP_ADDRESS')
...
등으로 어떤 Client 에서 작업 됬는지는 알수 있습니다.
UI단에서 수정자를 받고 있고 A_TABLE에 수정자 컬럼이 존재한다면 삭제전 A_TABLE의 수정자를 Update하고 삭제전 트리거에서 A_TABLE의 수정자를 삭제자로 하면 되지 않을까 생각이 드네요..