Db2-triggers

提供:Dev Guides
移動先:案内検索

DB2-トリガー

この章では、トリガー、そのタイプ、トリガーの作成と削除について説明します。

前書き

トリガーは、データベース内の指定されたテーブルに対するINSERT、UPDATE、またはDELETE操作に応答するために実行される一連のアクションです。 トリガーは一度にデータベースに保存されます。 データのガバナンスを処理します。 それらは、複数のアプリケーション間でアクセスおよび共有できます。 トリガーを使用する利点は、アプリケーションで変更を行う必要がある場合、トリガーで行われることです。トリガーにアクセスしている各アプリケーションを変更する代わりに。 トリガーは保守が簡単で、アプリケーション開発を高速化します。 トリガーは、SQLステートメント「CREATE TRIGGER」を使用して定義されます。

トリガーの種類

トリガーには2つのタイプがあります。

1. BEFOREトリガー

SQL操作の前に実行されます。

2. AFTERトリガー

これらは、SQL操作の後に実行されます。

BEFOREトリガーの作成

トリガーのシーケンスを作成する方法を見てみましょう。

構文:

db2 create sequence <seq_name>

:テーブルshopper.sales1のトリガーのシーケンスを作成する

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

構文:

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>

:主キー番号を自動的に挿入するための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)

テーブルから値を取得する

テーブルから値を取得する方法を見てみましょう。

  • 構文: *
db2 select* from <tablename>

db2 select * from shopper.sales1

出力

  ID       ITEMNAME       QTY
-------  ------------   ----------
    3      bicks            100
    2      bread            100

  2 record(s) selected.

AFTERトリガーの作成

後トリガーを作成する方法を見てみましょう。

構文:

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>

例: [値を挿入および取得するには]

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

出力:

//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.

トリガーのドロップ

データベーストリガーが削除される方法は次のとおりです。

構文:

db2 drop trigger <trigger_name>

例:

db2 drop trigger slaes1_trigger