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