트리거 정보

트리거는 데이터베이스에 저장되고 사용으로 설정된 상태인 경우 지정한 이벤트에 응답하여 자동으로 실행되는 PL/SQL 단위입니다("실행").

트리거의 구조는 다음과 같습니다.

TRIGGER trigger_name
  triggering_event
  [ trigger_restriction ]
BEGIN
  triggered_action;
END;

trigger_name은 스키마에서 트리거에 고유한 이름여야 합니다. 트리거는 스키마에서 다른 종류의 객체(예: 테이블)와 동일한 이름을 가질 수 있지만 혼동되지 않도록 이름 지정 규약을 사용하는 것이 좋습니다.

트리거가 사용으로 설정된 상태이면 trigger_restriction이 TRUE이거나 생략된 경우 triggering_event로 인해 데이터베이스에서 triggered_action을 실행합니다. triggering_event는 테이블, 뷰, 스키마 또는 데이터베이스와 연관되며 다음 중 하나입니다.

트리거가 사용 안함으로 설정된 상태이면 trigger_restriction이 TRUE이거나 생략된 경우에도 triggering_event로 인해 데이터베이스에서 triggered_action을 실행하지 않습니다.

기본적으로 트리거는 사용으로 설정된 상태로 생성됩니다. 사용으로 설정된 트리거를 사용 안함으로 설정하고 사용 안함으로 설정된 트리거를 사용으로 설정할 수 있습니다.

하위 프로그램과 달리 트리거는 직접 호출할 수 없습니다. 트리거는 모든 사용자나 응용 프로그램이 발생시킬 수 있는 트리거 이벤트에 의해서만 호출됩니다. 제대로 처리되지 않은 오류가 발생하지 않으면 트리거가 실행되는 것을 인식하지 못할 수도 있습니다.

단순 트리거는 정확히 다음 타이밍 지점 중 하나에서 실행될 수 있습니다.

복합 트리거는 여러 타이밍 지점에서 실행될 수 있습니다. 복합 트리거에 대한 자세한 내용은 Oracle Database PL/SQL Language Reference를(를) 참조하십시오.

INSTEAD OF 트리거는 뷰에 정의되며 해당 트리거 이벤트는 DML 문입니다. DML 문을 실행하는 대신 Oracle Database는 INSTEAD OF 트리거를 실행합니다. 자세한 내용은 "STEAD OF 트리거 생성"을 참조하십시오.

시스템 트리거는 스키마 또는 데이터베이스에 정의됩니다. 스키마에 정의된 트리거는 스키마 소유자(현재 사용자)와 연관된 각 이벤트에 대해 발생합니다. 데이터베이스에 정의된 트리거는 모든 사용자와 연관된 각 이벤트에 대해 발생합니다.

트리거는 모든 클라이언트 응용 프로그램에 적용되는 비즈니스 규칙을 적용하는 데 사용됩니다. 예를 들어, EMPLOYEES 테이블에 추가된 데이터는 특정 형식을 지정해야 하며, 많은 클라이언트 응용 프로그램이 이 테이블에 데이터를 추가할 수 있다고 가정합니다. 테이블 트리거는 테이블에 추가된 모든 데이터가 적절한 형식을 사용하도록 할 수 있습니다. 클라이언트가 테이블에 데이터를 추가할 때마다 트리거가 실행되므로 어떤 클라이언트도 이 규칙을 우회할 수 없으며, 규칙을 적용하는 코드는 각 클라이언트 응용 프로그램이 아니라 트리거에만 저장하고 유지 관리할 수 있습니다. 트리거의 다른 용도는 Oracle Database PL/SQL Language Reference를 참조하십시오.

참조: Oracle Database PL/SQL Language Reference에서 트리거에 대한 자세한 내용을 참조하십시오.