트리거가 불필요하다고 판단하여 삭제를 진행하려고 합니다. 그런데 삭제를 시도하려니 'ORA-04080: trigger TRIGGER_NAME does not exist' 오류가 발생하는데요, 해결 방법에 대해 알아보도록 하겠습니다.
DROP TRIGGER TRIGGER_NAME;
ERROR at line 1:
ORA-04080: trigger 'TRIGGER_NAME' does not exist
트리거 이름 다시 확인하기
드랍 하려는 트리거의 이름을 다시 확인해 주세요.
대소문자 확인하기
오라클 버전에 따라 대소문자를 구분하는 경우가 있습니다. 트리거 이름은 맞으나 대소문자가 틀린 것은 아닌지 확인해 주세요. 그리고 경우에 따라 따옴표(쿼테이션 마크)를 추가해서 삭제해 보세요.
DROP TRIGGER "trigger_name";
Trigger dropped.
계정 명시하기
USER_NAME.TRIGGER_NAME 과 같이 계정을 명시하여 처리해 보세요.
DROP TRIGGER USER_NAME.TRIGGER_NAME;
Trigger dropped.
접근 권한 확인하기
트리거에 대한 접근 권한에 따라 트리거를 찾을 수 없어서 트리거가 존재하지 않는다고 할 수도 있을 것입니다. 트리거에 대한 수정, 삭제가 가능한지 확인해 주세요.
객체가 트리거가 맞는지 확인하기
혹시라도 삭제하려는 객체가 트리거가 맞는지 확인해 주세요. 이 글을 쓰게 된 계기가 이것 때문입니다. 이름 규칙 때문에 트리거인 줄 알았는데 계속 안 지워지길래 대체 무엇이 문제인가 자세히 보니까 '펑션'이었습니다. 😭 '트리거' 삭제 명령어로 '펑션'을 드랍 하려고 하면 실패하겠지요?