DB2 - Tetikleyiciler

Bu bölümde tetikleyiciler, türleri, tetikleyicilerin oluşturulması ve bırakılması açıklanmaktadır.

Giriş

Tetikleyici, veritabanındaki belirli bir tabloda bir INSERT, UPDATE veya DELETE işlemine yanıt vermek için gerçekleştirilen bir eylemler kümesidir. Tetikleyiciler aynı anda veri tabanında saklanır. Veri yönetimini ele alırlar. Birden çok uygulama arasında erişilebilir ve paylaşılabilirler. Tetikleyicileri kullanmanın avantajı, uygulamada herhangi bir değişiklik yapılması gerekirse, tetikte yapılmasıdır; tetikleyiciye erişen her uygulamayı değiştirmek yerine. Tetikleyicilerin bakımı kolaydır ve daha hızlı uygulama geliştirmeyi zorunlu kılarlar. Tetikleyiciler, "CREATE TRIGGER" SQL ifadesi kullanılarak tanımlanır.

Tetikleyici türleri

İki tür tetikleyici vardır:

1. Tetikleyicilerden ÖNCE

Herhangi bir SQL işleminden önce yürütülürler.

2. AFTER tetikleyiciler

Herhangi bir SQL işleminden sonra çalıştırılırlar.

ÖNCE tetikleyici oluşturma

Bir tetikleme dizisinin nasıl oluşturulacağını görelim:

Syntax:

db2 create sequence <seq_name>

Example: Table shopper.sales1 için bir dizi tetikleyici oluşturma

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: Birincil anahtar numaralarını otomatik olarak eklemek için shopper.sales1 tablosu için tetikleyici oluşturma

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

Şimdi herhangi bir değer eklemeyi deneyin:

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

Tablodan değerlerin alınması

Bir tablodan değerleri nasıl alacağımızı görelim:

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.

SONRA tetikleyici oluşturma

Nasıl bir after tetikleyici oluşturacağımızı görelim:

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: [Değerleri eklemek ve almak için]

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.

Tetiği düşürmek

Bir veritabanı tetikleyicisinin nasıl bırakıldığı aşağıda açıklanmıştır:

Syntax:

db2 drop trigger <trigger_name>

Example:

db2 drop trigger slaes1_trigger