반응형
트리거를 만들 상황이 생겼습니다.
간단한 트리거이긴 하지만, 특정 테이블 컬럼에 INSERT나 UPDATE 발생 시 다른 테이블에 로깅을 위해 해당값을 삽입하는 트리거입니다.
단, NULL 값은 필요없으므로 삽입할 필요가 없는 상황입니다.
테스트 환경에서 대략 생성하여 테스트 수행시 NULL값은 제외하고 잘 작동되는것을 확인하였습니다.
1.테이블 생성
--데이터를 삽입할 테이블
CREATE TABLE TESTLINK
(a VARCHAR2(10);
--데이터 삽입시 트리거가 insert 할 테이블
CREATE TABLE TESTLINK2
(a VARCHAR2(10));
2.트리거 생성
TESTLINK의 A 컬럼에 INSERT나 UPDATE 발생시 작동
CREATE OR REPLACE TRIGGER TEST.TEST_FCE01
AFTER INSERT OR UPDATE OF A
ON TEST.TESTLINK
FOR EACH ROW
BEGIN
IF (:NEW.A) is NOT null THEN
insert into TEST.testlink2(A)
values(:NEW.A);
ELSE
DBMS_OUTPUT.PUT_LINE('This is Null');
END IF;
END;
3. 결과 테스트
--데이터 insert 전
SQL> select * from testlink;
A
----------
0 rows selected.
SQL> select * from testlink2;
A
----------
0 rows selected.
--데이터 insert(NULL값,'1'값 두개 삽입)
SQL> insert into testlink
values(NULL);
1 rows Inserted.
SQL> insert into testlink
values('1');
1 rows Inserted.
--확인
SQL> select * from testlink;
A
----------
1
2 rows selected.
NULL값 포함 2개의 행 검색됌
SQL> select * from testlink2;
A
----------
1
1 rows selected.
TESTLINK2 테이블에는 NULL 값이 제외되고 1만 삽입된것을 확인할 수 있습니다.
반응형
'SQL(쿼리)' 카테고리의 다른 글
Oracle RANK 함수 (0) | 2021.07.06 |
---|---|
실행계획 확인하기,실제 실행계획 확인하기 (0) | 2020.12.22 |
SCOTT스키마예제를 통해 계층구조 쿼리 정리 (0) | 2020.11.25 |
ROLLUP을 대신하는 방법 (0) | 2020.11.24 |
ROLLUP (0) | 2020.11.20 |
댓글