특정 테이블에 데이터가 신규, 수정, 삭제가 되지 않도록 막아야 하는 상황이 생겼다.
수많은 프로그램들을 일일이 수정을 해야하나 했는데,
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을 이용하여 개발자가 원하는 에러를 발생 시킬 수 있다.
'DB > ORACLE' 카테고리의 다른 글
[ORACLE] 텍스트 균등분할(균등정렬) FUNCTION (0) | 2023.08.18 |
---|---|
[ORACLE] VIRTUAL COLUMN(가상 열) 예제 (0) | 2023.07.04 |
[ORACLE] BETWEEN 주의사항 (0) | 2022.07.11 |
[ORACLE] 구분자로 분리하여 행으로 반환하는 TABLE FUNCTION (0) | 2022.02.16 |
[ORACLE] JSON_TABLE 예제 (0) | 2022.02.14 |