PostgreSQL 트리거: 예제를 통한 생성, 나열 및 삭제

트리거란 무엇입니까? PostgreSQL?

A PostgreSQL 트리거 데이터베이스 개체에 데이터베이스 이벤트가 발생할 때 자동으로 트리거되는 기능입니다. 예를 들어, 테이블. 트리거를 활성화할 수 있는 데이터베이스 이벤트의 예로는 INSERT, UPDATE, DELETE 등이 있습니다. 또한 테이블에 대한 트리거를 생성하면 해당 테이블이 삭제될 때 트리거가 자동으로 삭제됩니다.

트리거가 사용되는 방식 PostgreSQL?

트리거는 생성 중에 FOR EACH ROW 연산자로 표시될 수 있습니다. 이러한 트리거는 작업으로 수정된 각 행에 대해 한 번씩 호출됩니다. 트리거는 생성 중에 FOR EACH STATEMENT 연산자로 표시될 수도 있습니다. 이 트리거는 특정 작업에 대해 한 번만 실행됩니다.

PostgreSQL 트리거 만들기

트리거를 생성하려면 CREATE TRIGGER 함수를 사용합니다. 함수의 구문은 다음과 같습니다.

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name  
ON table-name  
[  
 -- Trigger logic  
];

Trigger-name은 트리거의 이름입니다.

BEFORE, AFTER 및 INSTEAD OF는 트리거가 호출되는 시기를 결정하는 키워드입니다.

event-name은 트리거가 호출되도록 하는 이벤트의 이름입니다. 이것은 될 수있다 INSERT, 업데이트, 삭제 등

table-name은 트리거가 생성될 테이블의 이름입니다.

INSERT 작업에 대한 트리거를 생성하려면 ON column-name 매개변수를 추가해야 합니다.

다음 구문은 이를 보여줍니다.

CREATE TRIGGER trigger-name AFTER INSERT ON column-name  
ON table-name  
[  
 -- Trigger logic
];

PostgreSQL 트리거 예제 생성

아래 가격표를 사용하겠습니다.

가격:

PostgreSQL 트리거 만들기

Price 테이블의 변경 사항을 기록하는 Price_Audits라는 또 다른 테이블을 만들어 보겠습니다.

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
);

이제 auditfunc라는 새 함수를 정의할 수 있습니다.

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql;

위 함수는 새 행 ID와 레코드가 생성된 시간을 포함하여 Price_Audits 테이블에 레코드를 삽입합니다.

이제 트리거 기능이 있으므로 이를 가격 테이블에 바인딩해야 합니다. 트리거 이름을 Price_trigger로 지정하겠습니다. 새 레코드가 생성되기 전에 트리거 기능이 자동으로 호출되어 변경 사항을 기록합니다. 트리거는 다음과 같습니다.

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc();

Price 테이블에 새 레코드를 삽입해 보겠습니다.

INSERT INTO Price 
VALUES (3, 400);

이제 Price 테이블에 레코드를 삽입했으므로 Price_Audit 테이블에도 레코드를 삽입해야 합니다. 이는 가격 테이블에서 생성한 트리거의 결과입니다. 이것을 확인해 봅시다:

SELECT * FROM Price_Audits;

다음이 반환됩니다.

PostgreSQL 트리거 만들기

트리거가 성공적으로 작동했습니다.

Postgres 목록 트리거

다음에서 생성하는 모든 트리거 PostgreSQL pg_trigger 테이블에 저장됩니다. 현재 있는 트리거 목록을 보려면 데이터베이스, 아래와 같이 SELECT 명령을 실행하여 테이블을 쿼리합니다.

SELECT tgname FROM pg_trigger;

다음을 반환합니다.

Postgres 목록 트리거

pg_trigger 테이블의 tgname 열은 트리거의 이름을 나타냅니다.

Postgres 드롭 트리거

삭제하려면 PostgreSQL 트리거를 사용하려면 다음 구문으로 DROP TRIGGER 문을 사용합니다.

DROP TRIGGER [IF EXISTS] trigger-name 
ON table-name [ CASCADE | RESTRICT ];

Trigger-name 매개변수는 삭제할 트리거의 이름을 나타냅니다.

table-name은 트리거가 삭제될 테이블의 이름을 나타낸다.

IF EXISTS 절은 존재하는 트리거를 삭제하려고 시도합니다. IF EXISTS 절을 사용하지 않고 존재하지 않는 트리거를 삭제하려고 하면 오류가 발생합니다.

CASCADE 옵션은 트리거에 의존하는 모든 개체를 자동으로 삭제하는 데 도움이 됩니다.

RESTRICT 옵션을 사용하는 경우 개체가 트리거에 종속되어 있으면 트리거가 삭제되지 않습니다.

예를 들면 :

Price 테이블에서 example_trigger라는 트리거를 삭제하려면 다음 명령을 실행합니다.

Company 테이블에 example_trigger라는 트리거를 삭제하려면 다음 명령을 실행합니다.

DROP TRIGGER example_trigger IF EXISTS
ON Company;

pgAdmin 사용

이제 pgAdmin을 사용하여 세 가지 작업이 모두 어떻게 수행되는지 살펴보겠습니다.

트리거를 만드는 방법 PostgreSQL pgAdmin 사용

pgAdmin을 사용하여 Postgres에서 트리거를 만드는 방법은 다음과 같습니다.

1단계) pgAdmin 계정에 로그인하세요.

pgAdmin을 열고 자격 증명을 사용하여 계정에 로그인하십시오.

2단계) 데모 데이터베이스 생성

  1. 왼쪽 탐색 모음에서 데이터베이스를 클릭합니다.
  2. 데모를 클릭하세요.

트리거 생성 위치 PostgreSQL pgAdmin 사용

3단계) ​​쿼리 입력

Price_Audits 테이블을 생성하려면 편집기에 쿼리를 입력하세요.

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
)

4단계) 쿼리 실행

실행 버튼을 클릭하세요

트리거 생성 위치 PostgreSQL pgAdmin 사용

5단계) auditfunc에 대한 코드 실행

다음 코드를 실행하여 auditfunc 함수를 정의하세요.

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql

6단계) 코드를 실행하여 트리거 생성

다음 코드를 실행하여 price_trigger 트리거를 생성합니다.

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc()

7단계) 새 레코드 삽입

  1. 다음 명령을 실행하여 Price 테이블에 새 레코드를 삽입합니다.
    INSERT INTO Price
    VALUES (3, 400)
  2. 다음 명령을 실행하여 Price_Audits 테이블에 레코드가 삽입되었는지 확인하세요.
    SELECT * FROM Price_Audits

    그러면 다음이 반환됩니다.

트리거 생성 위치 PostgreSQL pgAdmin 사용

8단계) 테이블 내용 확인

Price_Audits 테이블의 내용을 확인해 보겠습니다.

pgAdmin을 사용하여 트리거 나열

단계 1) 다음 명령을 실행하여 데이터베이스의 트리거를 확인하세요.

SELECT tgname FROM pg_trigger

다음을 반환합니다.

pgAdmin을 사용하여 트리거 나열

pgAdmin을 사용하여 트리거 삭제

Company 테이블에 example_trigger라는 트리거를 삭제하려면 다음 명령을 실행합니다.

DROP TRIGGER example_trigger IF EXISTS
ON Company

제품 개요

  • A PostgreSQL 트리거는 테이블과 같은 데이터베이스 객체에 데이터베이스 이벤트가 발생할 때 자동으로 트리거되는 기능을 의미합니다.
  • 이러한 데이터베이스 이벤트의 예로는 INSERT, UPDATE, DELETE 등이 있습니다.
  • 트리거는 생성된 데이터베이스 개체의 수명 동안에만 존재합니다.
  • 데이터베이스 개체가 삭제되면 트리거도 삭제됩니다.
  • PostgreSQL 트리거는 CREATE TRIGGER 문을 사용하여 생성됩니다.
  • 각 트리거는 트리거가 호출될 때 수행할 작업을 나타내는 함수와 연결됩니다.

이 튜토리얼에 사용된 데이터베이스 다운로드

이 게시물을 요약하면 다음과 같습니다.