오라클 trigger 예제

경우에 따라 AUDIT 문은 보안 감사 시설로 간주되며 트리거는 재무 감사 기능을 제공할 수 있습니다. 트리거를 사용하여 참조 무결성을 적용할 수 있는 경우가 많습니다. 그러나 수행 중인 작업에 대한 선언적 지원이 없는 경우에만 트리거를 사용해야 합니다. 트리거 대신 에 대한 WHEN 절을 지정할 수 없습니다. ALTER 트리거 문을 사용하여 트리거를 수동으로 다시 컴파일합니다. 예를 들어 다음 문은 PRINT_SALARY_CHANGES 트리거를 다시 컴파일합니다: 코딩 트리거에는 표준 PL/SQL 블록에 필요하지 않은 몇 가지 제한사항이 필요합니다. 다음 섹션에서는 이러한 제한 사항에 대해 설명합니다. 행 수준 DML 트리거는 해당 트리거를 발생시킨 테이블에서 DML을 쿼리하거나 수행할 수 없습니다. 이렇게 하려고 하면 변경 테이블 예외가 발생 합니다. 부모-자식 관계가 있고 부모 테이블의 트리거가 자식 테이블에서 일부 DML을 실행해야 하는 경우 이 문제가 약간 어색해질 수 있습니다. 자식 테이블에 상위 테이블에 외래 키(FK)가 다시 있는 경우 자식 테이블의 DML은 재귀 SQL 문이 제약 조건을 확인하게 됩니다. 이렇게 하면 간접적으로 변경 테이블 예외가 발생 합니다.

테이블 을 변경하는 예제와 이에 대한 해결 방법은 여기에서 찾을 수 있습니다. 모든 데이터베이스 감사 정보는 Oracle Database의 감사 기능을 사용하여 중앙및 자동으로 기록됩니다. 다음 예제에서 프로시저 set_ctx는 사용자 프로필을 기반으로 응용 프로그램 컨텍스트를 설정합니다. 트리거 setexpensectx는 모든 사용자에 대해 컨텍스트가 설정되도록 합니다. 트리거는 BEFORE 키워드를 사용하기 때문에 테이블에 들어가기 전에 새 값에 액세스할 수 있으며 :NEW.column_name에 할당하여 쉽게 수정할 수 있는 오류가 있는 경우 값을 변경할 수 있습니다. 트리거가 초기 변경 사항이 적용되고 테이블이 일관된 상태로 돌아온 후에만 트리거가 수행될 수 있으므로 트리거가 동일한 테이블을 쿼리하거나 변경하려는 경우 AFTER 키워드를 사용할 수 있습니다. 선택적으로 모든 업데이트에 대해 이유 코드를 강제로 설정하려는 경우 이유 코드를 NULL로 다시 설정할 수도 있습니다. 다음 간단한 AFTER 문 트리거는 트리거 문이 실행된 후 이유 코드를 NULL로 다시 설정합니다.