DB2-트리거

이 장에서는 트리거, 트리거 유형, 트리거 생성 및 삭제에 대해 설명합니다.

소개

트리거는 데이터베이스의 지정된 테이블에서 INSERT, UPDATE 또는 DELETE 작업에 응답하기 위해 수행되는 일련의 작업입니다. 트리거는 데이터베이스에 한 번에 저장됩니다. 데이터 거버넌스를 처리합니다. 여러 애플리케이션간에 액세스하고 공유 할 수 있습니다. 트리거 사용의 장점은 애플리케이션에서 변경해야하는 경우 트리거에서 수행된다는 것입니다. 트리거에 액세스하는 각 애플리케이션을 변경하는 대신. 트리거는 유지 관리가 쉽고 더 빠른 애플리케이션 개발을 시행합니다. 트리거는 SQL 문 "CREATE TRIGGER"를 사용하여 정의됩니다.

트리거 유형

트리거에는 두 가지 유형이 있습니다.

1. 트리거 전

SQL 작업 전에 실행됩니다.

2. AFTER 트리거

SQL 작업 후에 실행됩니다.

BEFORE 트리거 만들기

트리거 시퀀스를 만드는 방법을 살펴 보겠습니다.

Syntax:

db2 create sequence <seq_name>

Example: shopper.sales1 테이블에 대한 일련의 트리거 작성

db2 create sequence sales1_seq as int start with 1 increment by 1

Syntax:

db2 create trigger <trigger_name> no cascade before insert on 
<table_name> referencing new as <table_object> for each row set 
<table_object>.<col_name>=nextval for <sequence_name>

Example: 기본 키 번호를 자동으로 삽입하도록 shopper.sales1 테이블에 대한 트리거 작성

db2 create trigger sales1_trigger no cascade before insert on 
shopper.sales1 referencing new as obj for each row set 
obj.id=nextval for sales1_seq

이제 값을 삽입 해보십시오.

db2 insert into shopper.sales1(itemname, qty, price) 
values('bicks', 100, 24.00)

테이블에서 값 검색

테이블에서 값을 검색하는 방법을 살펴 보겠습니다.

Syntax:

db2 select * from <tablename>

Example:

db2 select * from shopper.sales1

Output:

ID       ITEMNAME       QTY 
-------  ------------   ---------- 
    3      bicks            100 
    2      bread            100 
  
  2 record(s) selected.

AFTER 트리거 만들기

이후 트리거를 만드는 방법을 살펴 보겠습니다.

Syntax:

db2 create trigger <trigger_name> no cascade before insert on 
<table_name> referencing new as <table_object> for each row set
 <table_object>.<col_name>=nextval for <sequence_name>

Example: [값을 삽입하고 검색하려면]

db2 create trigger sales1_tri_after after insert on shopper.sales1 
for each row mode db2sql begin atomic update shopper.sales1 
set price=qty*price; end

Output:

//inseting values in shopper.sales1 
db2 insert into shopper.sales1(itemname,qty,price) 
values('chiken',100,124.00) 
//output 
ID    ITEMNAME       QTY         PRICE 
----- -------------- ----------- -----------                      
    3 bicks          100         2400.00 
    4 chiken         100         12400.00 
    2 bread          100         2400.00 

	3 record(s) selected.

트리거 삭제

다음은 데이터베이스 트리거가 삭제되는 방법입니다.

Syntax:

db2 drop trigger <trigger_name>

Example:

db2 drop trigger slaes1_trigger