com_scommit_member
이름 널 유형
----------- -------- ------------
MEM_UID NOT NULL NUMBER
SCOMMIT_CD NOT NULL VARCHAR2(2)
COUNTRY_CD NOT NULL VARCHAR2(2)
REGION_CD NOT NULL VARCHAR2(3)
DELEGATION NUMBER
WRITE_NM NOT NULL VARCHAR2(50)
WRITE_DATE NOT NULL DATE
UPDATE_NM NOT NULL VARCHAR2(50)
UPDATE_DATE NOT NULL DATE
이 테이블에 대해서
delegation이 1이 되어서 들어오는 입력/수정이 있으면
scommit_cd가 같은 다른 데이터의 delegation을 0으로 돌리고 싶어서
다음과 같은 트리거를 만들었습니다.
create or replace
trigger TR_REMOVE_DELEGATION BEFORE
insert or update on com_scommit_member
FOR EACH ROW
BEGIN
if :NEW.delegation = 1 and :NEW.delegation <> :OLD.delegation then
UPDATE COM_SCOMMIT_MEMBER
SET DELEGATION = 0
WHERE DELEGATION = 1
AND SCOMMIT_CD = :NEW.SCOMMIT_CD
AND mem_uid <> :NEW.mem_uid;
END IF;
END;
[ORA-04091: table is mutating, trigger/function may not see it] 이 에러가 발생하였습니다.
트리거 자신이 연결된 테이블에 업데이트를 걸면 안되는 것인가요?