SQL(쿼리)
트리거 생성(IF문 활용해서 Not Null인 컬럼만 트리거 작동)
취미툰
2020. 12. 7. 16:12
반응형
트리거를 만들 상황이 생겼습니다.
간단한 트리거이긴 하지만, 특정 테이블 컬럼에 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만 삽입된것을 확인할 수 있습니다.
반응형