DB/ORACLE

[ORACLE] DB에서 신규, 수정, 삭제 차단

울면서개발하기 2022. 2. 14. 19:20

특정 테이블에 데이터가 신규, 수정, 삭제가 되지 않도록 막아야 하는 상황이 생겼다.

 

수많은 프로그램들을 일일이 수정을 해야하나 했는데,

TRIGGER를 통해 아래와 같은 방법으로도 대응이 가능했다.

create or replace TRIGGER TRI_TEST 
BEFORE DELETE OR INSERT OR UPDATE ON TB_TEST  
BEGIN 
    /* 삭제 또는 신규 또는 업데이트시*/ 
    RAISE_APPLICATION_ERROR(-20001, '데이터 수정이 불가합니다.'); /* 사용자에러발생 */ 
END;

 

데이터 수정시 아래와 같은 에러 발생 → ORA-20001 데이터 수정이 불가합니다.

ORA-20001: 데이터 수정이 불가합니다.
ORA-06512: at "TRI_TEST", line 3
ORA-04088: error during execution of trigger 'TRI_TEST'
ORA-06512: at line 1

 

 

참고

http://www.gurubee.net/lecture/1076

 

Trigger(트리거)

트리거란?   INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE 이다.   트리거는 TABLE과는 별도로 DA..

www.gurubee.net

http://www.gurubee.net/lecture/1073

 

사용자 정의 예외(User-Defined Exceptions)

  오라클 저장함수 RAISE_APPLICATION_ERROR를 사용하여 오류코드 -20000부터 -20999의 범위 내에서 사용자 정의 예외를 만들수 있다.   - STEP 1..

www.gurubee.net

"ORA-00001 : 유일성 제약조건에 위배됩니다" 등 은 오라클이 발생시키는 에러지만,

RAISE_APPLICATION_ERROR을 이용하여 개발자가 원하는 에러를 발생 시킬 수 있다.