PostgreSQL Triggers are database callback functions, which are automatically performed/invoked when a specified database event occurs.행에서 작업을 시도하기 전에(제약 조건을 확인하고 삽입,업데이트 또는 삭제를 시도하기 전에)작업이 완료된 후(제약 조건을 확인하고 삽입,업데이트 또는 삭제가 완료된 후)작업을 실행하도록 지정할 수 있습니다.각 행에 대해 표시된 트리거는 모든 행에 대해 한 번 호출됩니다. 작업이 수정됩니다. 반대로 각 문에 대해 표시된 트리거는 수정되는 행 수에 관계없이 지정된 작업에 대해 한 번만 실행됩니다.모두,절과 트리거 작업,삽입되는 행의 요소에 액세스 할 수 있습니다,삭제 또는 새로운 형태의 참조를 사용하여 업데이트.열-이름과 이전.여기서 열 이름은 트리거가 연결된 테이블의 열 이름입니다.이 경우,해당 행은 해당 행에서 실행될 수 있습니다. 절이 제공될 때 없는 경우 모든 행에 대해 쿼리 후 문이 실행됩니다.같은 종류의 여러 트리거가 같은 이벤트에 대해 정의된 경우,이 트리거는 이름으로 알파벳 순서로 실행됩니다.트리거 동작이 관련 행의 삽입,수정 또는 제거를 기준으로 실행 될 때 이전,후 또는 대신 키워드를 결정합니다.트리거는 연결된 테이블이 삭제될 때 자동으로 삭제됩니다.수정할 테이블은 트리거가 연결된 테이블이나 뷰와 동일한 데이터베이스에 있어야 하며 데이터베이스가 아닌 테이블 이름만 사용해야 합니다.테이블 이름.지정된 제약 조건 옵션은 제약 조건 트리거를 만듭니다. 이것은 트리거 발사의 타이밍이 설정된 제약 조건을 사용하여 조정될 수 있다는 것을 제외하고 일반 트리거와 동일합니다. 제약 조건 트리거는 구현하는 제약 조건을 위반할 때 예외를 발생시킬 것으로 예상됩니다.여기서 이벤트 이름은 언급된 테이블 테이블 이름에 대한 데이터베이스 작업을 삽입,삭제,업데이트 및 잘라낼 수 있습니다. 테이블 이름 뒤에 각 행에 대해 선택적으로 지정할 수 있습니다.예를 들어,회사 테이블에 삽입되는 모든 레코드에 대해 감사 시험을 유지하려는 경우를 고려해 보겠습니다.이 레코드는 다음과 같이 새로 만듭니다(이미 있는 경우 회사 테이블을 삭제합니다).감사 시험을 유지하기 위해,우리는 새로운 레코드에 대한 회사 테이블에 항목이있을 때마다 로그 메시지가 삽입됩니다 감사라는 새 테이블을 생성합니다−같은 시간,하나의 레코드는 감사 테이블에 생성됩니다. 이 레코드는 우리가 회사 테이블에 삽입 작업에 만든 트리거의 결과입니다. 마찬가지로 요구 사항에 따라 업데이트 및 삭제 작업에 대한 트리거를 만들 수 있습니다.
emp_id | entry_date--------+------------------------------- 1 | 2013-05-05 15:49:59.968+05:30(1 row)
나열 트리거
할 수 있는 목록 모든 트리거에는 현재 데이터베이스에서 pg_trigger 테이블 다음과 같습니다−
testdb=# SELECT * FROM pg_trigger;
주어진 이상 PostgreSQL 문이 아래 목록은 모든 트리거합니다.
하려는 경우 목록 트리거 특정 테이블에서,다음 사용 및 절 테이블을 가진 이름을 다음과 같습니다−
testdb=# SELECT tgname FROM pg_trigger, pg_class WHERE tgrelid=pg_class.oid AND relname='company';
주어진 이상 PostgreSQL 문는 또한 목록을 아래로 하나의 항목은 다음과 같습니다−
tgname----------------- example_trigger(1 row)
떨어지고 트리거
다음과 드롭다운 명령 는 삭제하는 데 사용할 수 있습니다 기존 트리거−
testdb=# DROP TRIGGER trigger_name;