[Oracle] 오라클 ORA-04091 "테이블이 변경되어, 트리거/함수가 볼 수 없습니다" 오류 해결 방법 / "table is mutating, Trigger/Fuction may not see it"
·
DataBase/Oracle Error
원인ORA-04091 오류는 트리거가 참조하고 있는 테이블의 변경 사항이 확정되지 않은 상태에서 동일한 테이블을 다시 참조하려고 할 때, 데이터 일관성을 보장하기 위해 발생대부분 행 수준 트리거(Row-Level Trigger)에서 발생트리거에서 참조하는 테이블과 동일한 테이블을 DML(SELECT, UPDATE, DELETE, INSERT) 하여 접근하는 경우트리거가 직접 또는 간접적으로 다시 호출(재귀 호출)되어 동일한 테이블을 접근하는 경우위의 경우 변경된 내용을 다시 트리거가 참조하게 되어 무한 루프가 발생하기 때문에 오라클이 오류가 발생시킵니다. 해결 방법트리거를 문장 수준 트리거(Statement-Level Trigger)로 변경CREATE OR REPLACE TRIGGER STATEMENT_..
[Oracle] 오라클 ORA-04092 "트리거 안에 COMMIT를 할 수 없습니다" 오류 해결 방법
·
DataBase/Oracle Error
ORA-04092: 트리거 안에 COMMIT를 할 수 없습니다. / 트리거 안에 ROLLBACK을 할 수 없습니다. 위와 같은 오류가 발생하는 경우 해결하는 방법을 알려 드리겠습니다. 원인트리거(TRIGGER) 는 오류가 있으면 ROLLBACK, 오류가 없으면 COMMIT 이 자동으로 처리즉, 트리거 적용 시 AUTO COMMIT 수행되고 있으니 COMMIT / ROLLBACK 명령어가 필요 없다.COMMIT 이나 ROLLBACK 필요 없으므로 삭제해결 방법COMMIT 이나 ROLLBACK이 명령어 삭제 (권장)트리거 내부에서 프로시저를 호출하는 경우 해당 프로시저 안에 있는 COMMIT, ROLLBACK 명령어도 삭제트리거 내에 AUTO COMMIT 해제 기능 추가 (코드가 너무 복잡해서 수정 불가능한..
[Oracle] 오라클 ORA-00904 "부적합한 식별자 invalid identifier" 오류 해결 방법
·
DataBase/Oracle Error
오라클에서 ORA-00904: 부적합한 식별자 오류가 발생하는 원인과 해결 방법을 알려 드리겠습니다.원인 및 해결 방법1. 존재하지 않는 열 이름 지정 - 쿼리에 사용된 컬럼명이 테이블에 존재하지 않거나 오타 발생 ▶ 오타 확인, 테이블에 정의된 컬럼명 확인 2. 작은 따옴표( ' )와 큰 따옴표 ( " ) 사용 방법 오류 - 작은 따옴표( ' )는 값(value)을 지정, 큰 따옴표( " )는 객체(identifier)를 지정해야 하는데 반대로 사용 ▶ 값에 큰 따옴표( " ) 사용한 경우 작은 따옴표( ' )로 변경, 객체(컬럼명)에는 특수한 경우 아니면 따옴표 미사용 3. 정의된 열 이름과 대소문자가 일치하지 않는 경우 - 오라클은 기본적으로 식별자를 대문자로 통일하여 처리(컬럼명을 소문자로 입력하..
[Oracle] 오라클 ORA-01756 "단일 인용부를 지정해 주십시오" 에러 해결 방법 / 스케줄러
·
DataBase/Oracle Error
ORA-01756: 단일 인용부를 지정해 주십시오 에러가 발생하는 경우 작은따옴표(') 가 빠진게 없는지 확인하면 됩니다.SELECT * FROM EMP WHERE EMP_NO IN ('4800','7841','4314','1343')SELECT * FROM EMP WHERE EMP_NO IN ('4800','7841','4314',1343') // 작은따옴표 (') 빠짐 스케줄러 잡에서 ORA-01756 에러 발생 작성자는 스케줄러 잡에서 ORA-01756 에러가 발생하여 해결 방법을 추가로 공유합니다. 스케줄러 잡을 Describe Object 를 해보니 V_RESULT := ''; 부분에서 작은따옴표(')가 사용되어 job_action 을 닫는 것으로 인식되어 에러가 발생 했습니다.V_RESULT ..
[Oracle] 오라클 ORA-00920 "관계 연산자가 부적합합니다" 오류 원인 및 해결 방법
·
DataBase/Oracle Error
오라클을 사용하면서 쿼리를 작성하거나 웹 등에 적용할때 "ORA-00920: 관계 연산자가 부적합합니다." 라는 오류가 발생하는 경우 확인해야할 사항을 알려드립니다. ORA-00920 오류 원인 해당 오류는 WHERE 절의 관계연산자 =, , =, !=, , AND, OR 가 잘못되면 발생합니다. 보통은 정신없이 쿼리를 작성하다가 오타가 나거나 관계연산자를 누락하는 경우 발생합니다. 위의 예제처럼 SQL Tool 에서는 쉽게 파악 후 수정이 가능하지만 웹이나 프로그램에서 개발을 할때는 찾기 어려울 수 있습니다.동일한 쿼리를 SQL Tool 에서 먼저 돌려보시고 문제가 없다면 주석 처리 되었는지 확인해보시면 됩니다. 쿼리 가독성이 좋지 않아 쿼리가 복잡해지는 경우 찾기 어렵습니다.