차근차근/Oracle

트리거(TRIGGER)

예쁜꽃이피었으면 2021. 12. 22. 10:11

트리거

트리거란 영어로 방아쇠다.

방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 실행하고 총알이 날아가는 것처럼 데이터베이스 이벤트에 반응하여 실행되는 프로그램 단위이다.

트리거링 이벤트에 대해 자동으로 실행되는 프로시저로 데이터베이스에 저장되는 스키마 오브젝트이다.

트리거의 주요 사용목적은 테이블 데이터의 무결성 보장, 데이터베이스 관리의 자동화 등이라고 할 수 있다.

 

트리거 이벤트

- 데이터 조작어(DML) : insert, update, delete

- 데이터 정의어(DDL) : create, alter, drop

- 데이터베이스 오퍼레이션 : servererror, logon, startup or shutdown

 

트리거 타이밍

- before : 이벤트가 발생하기 전에

- after : 이벤트가 발생한 후에

- for each row 

  1) 행 트리거 : DML의 영향을 받는 모든 행, 레코드마다 트리거가 작동되는 트리거

  2) 명령문 트리거 : 몇 건의 삽입, 삭제, 갱신이 있어도 한번만 동작하는 트리거

- :old  :new 

  for each row 절이 있다면 행 트리거이고 행 트리거에 한해 레코드의 값을 제어할 수 있다.

  1) :old : update되기 전의 값, delete되기 전의 값에 접근 가능

  2) :new : insert되는 값, update된 후의 값에 접근 가능

- when

  : when절에 조건을 줘서 조건에 맞는 경우에만 트리거가 동작되도록 할 수 있다.

 

 

트리거 우선순위

오라클에서 동일한 트리거 이벤트, 타이밍에 대해 여러 개의 트리거를 작성하는 것은 가능하다.

오라클 11g이후 동일한 트리거링 이벤트 및 트리거 타이밍에 대해 실행되는 트리거가 여러 개인 경우 

FOLLOWS, PRECEDES구를 통해 실행의 우선순위를 정하는 것이 가능하다.

 

 

DML트리거

DML트리거는 DML문(insert, update, delete)이 테이블의 하나 이상의 데이터에 영향을 미칠 때 자동으로 실행되는 트리거이다. 프로시저나 함수는 사용자가 직접 호출해야 하지만, 트리거는 오라클에서 사용자에게 알려주지 않고 자동으로 호출하여 처리한다.

 

DML트리거의 특징

- 자동으로 실행되며 수동으로 실행할 수 없다.

- 어떤 동작에서 실행되는지 지정해야 한다.

- 작동이 일어난 트리거 대상 테이블에 대해서는 트리거 내용이 존재할 수 없다.

- BEFORE, AFTER두 가지 트리거가 있다.

- 트랜잭션 일부로 처리된다. (commit, rollback, savepoint문장을 포함못함)

 

DML트리거 생성

CREATE [OR REPLACE] TRIGGER <트리거이름>
{BEFORE|AFTER}<이벤트>ON<테이블>
[FOR EACH ROW]
[WHEN(<조건>)]
[DECLARE(<변수선언>)]
BEGIN
	<실행코드>
[EXCEPTION<예외사항>]
END<트리거이름>;

[참조]

https://afsdzvcx123.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-SQL-%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%8A%B8%EB%A6%AC%EA%B1%B0TRIGGER-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95

 

[오라클 SQL] 오라클 트리거(TRIGGER) 개념 및 사용 방법

안녕하세요. 오늘은 오라클 문법에서 트리거에 대해서 알아보려고 합니다. 먼저 트리거(TRIGGER)에 대한 개념부터 익혀봐야 겠죠? 트리거(TRIGGER)란 무엇인가? -     트리거는 데이터베이스 이벤

afsdzvcx123.tistory.com

https://m.blog.naver.com/leejongcheol2018/222035608132

 

오라클 트리거(Oracle Trigger), 트리거실행순서, Instead Of Trigger, Trigger Mutating Table Exception, Compound Tri

오라클 트리거(Oracle Trigger), 트리거실행순서, Instead Of Trigger, Trigger Mutating Table E...

blog.naver.com

https://limkydev.tistory.com/154

 

[SQLD] 제2장 트리거(Trigger)란?

1. 트리거(Trigger)란? 트리거(Trigger)란 영어로 방아쇠라는 뜻인데, 방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 실행하고 총알이 날아갑니다. 이처럼 데이터베이스에서도 트

limkydev.tistory.com

 

 

 

 

 

반응형

'차근차근 > Oracle' 카테고리의 다른 글

뷰 View  (0) 2021.12.22
패키지 Package  (0) 2021.12.22
다른 db 테이블 조회  (0) 2021.12.21
PL/SQL - 커서(CORSOR)  (0) 2021.12.13
PL/SQL기초  (0) 2021.12.13