Share to: share facebook share twitter share wa share telegram print page

데이터베이스 트리거

데이터베이스 트리거(Database Trigger)는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 트리거는 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용된다. 트리거를 사용하여 데이터 작업 제한, 작업 기록, 변경 작업 감사 등을 할 수 있다.

유형

트리거에는 크게 나누어 행 트리거와 문장 트리거의 두 종류가 있다.

  • 행 트리거: 테이블 안의 영향을 받은 행 각각에 대해 실행된다. 변경 전 또는 변경 후의 행은 OLD, NEW라는 가상 줄 변수를 사용하여 읽을 수 있다.
  • 문장 트리거:INSERT, UPDATE, DELETE 문에 대해 한번만 실행된다.

또한 트리거는 다음과 같은 속성을 갖는다.

  • BEFORE 또는 AFTER
트리거가 실행되는 시기를 지정한다.
  • INSTEAD OF
트리거를 원래 문장 대신 수행한다.
  • WHEN
트리거를 시작하는 조건식을 지정한다.

일반적으로 트리거는 다음의 3 가지 경우에 시작된다. 트리거는 SELECT 문에 의한 데이터 검색에 영향을 미칠 수 없다.

  • INSERT (새로운 행 삽입)
  • UPDATE (기존 행의 변경) / UPDATE OF (기존 행의 특정 열 변경)
  • DELETE (기존 행 삭제)

오라클 트리거

오라클 데이터베이스는 표준 트리거 외에 Oracle 9i에서 "스키마 레벨 트리거"라는 스키마 변경 및 사용자 로그인 / 로그 오프에 대한 트리거가 추가되었다.

  • INSERT
  • UPDATE
  • DELETE
  • AFTER CREATE
  • BEFORE / AFTER ALTER
  • BEFORE / AFTER DROP
  • BEFORE LOGOFF / AFTER LOGON

마이크로소프트 SQL 서버 트리거

Microsoft SQL Server에서는 표준 트리거 외에 뷰 에 INSTEAD OF 트리거를 정의 할 수 있다. 또한 Microsoft SQL Server 2005에서 데이터 정의 언어(DDL) 트리거가 추가되었다.

  • INSERT
  • UPDATE
  • DELETE
  • DROP TABLE
  • CREATE TABLE
  • ALTER TABLE
  • 로그인

PostgreSQL 트리거

PostgreSQL는 버전 6.2 (1997년)에서 표준 트리거가 지원되고 있다. 또한 버전 8.4에서 TRUNCATE 이벤트, 9.0에서 UPDATE OF, WHEN 절을 지원했다.

  • INSERT
  • UPDATE / UPDATE OF
  • DELETE
  • TRUNCATE

트리거에서 실행되는 프로세스는 직접 작성하지 않고 함수로 준다.

문법 :

 CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
     ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
     [ WHEN (...) ] EXECUTE PROCEDURE funcname ( arguments )

MySQL 트리거

MySQL은 버전 5.0.2에서 표준 트리거가 지원되었다.

  • INSERT
  • UPDATE
  • DELETE

주의: MySQL은 각 테이블에 각 형태의 단 하나의 트리거만 허용한다. (즉, 인서트 이전에 하나, 인서트 이후에 하나, 업데이트 이전에 하나, 업데이터 이후에 하나, 삭제 전후에 각각 하나씩)

주의: MySQL은 구문을 외부에서 격발하지 않는다. (즉, API, 외래 키 캐스캐이드)

문법 :

 CREATE TRIGGER salary_trigger
     BEFORE UPDATE ON employee_table
     REFERENCING NEW ROW AS n, OLD ROW AS o
     FOR EACH ROW
     IF n.salary <> o.salary THEN
        ...
     END IF;


외부 링크

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya