DB2 - Trigger

Questo capitolo descrive i trigger, i loro tipi, la creazione e l'eliminazione dei trigger.

introduzione

Un trigger è un insieme di azioni, che vengono eseguite per rispondere a un'operazione INSERT, UPDATE o DELETE su una tabella specificata nel database. I trigger vengono archiviati nel database contemporaneamente. Gestiscono la governance dei dati. È possibile accedervi e condividerli tra più applicazioni. Il vantaggio dell'utilizzo di trigger è che, se è necessario apportare modifiche nell'applicazione, viene eseguita al trigger; invece di modificare ogni applicazione che accede al trigger. I trigger sono facili da mantenere e impongono uno sviluppo più rapido delle applicazioni. I trigger vengono definiti utilizzando un'istruzione SQL "CREATE TRIGGER".

Tipi di trigger

Esistono due tipi di trigger:

1. PRIMA dei trigger

Vengono eseguiti prima di qualsiasi operazione SQL.

2. DOPO i trigger

Vengono eseguiti dopo qualsiasi operazione SQL.

Creazione di un trigger BEFORE

Vediamo come creare una sequenza di trigger:

Syntax:

db2 create sequence <seq_name>

Example: Creazione di una sequenza di trigger per table 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: Creazione di un trigger per la tabella shopper.sales1 per inserire automaticamente i numeri della chiave primaria

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

Ora prova a inserire qualsiasi valore:

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

Recupero dei valori dalla tabella

Vediamo come recuperare i valori da una tabella:

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.

Creazione di un trigger AFTER

Vediamo come creare un trigger 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: [Per inserire e recuperare i valori]

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.

Far cadere un grilletto

Ecco come viene rilasciato un trigger di database:

Syntax:

db2 drop trigger <trigger_name>

Example:

db2 drop trigger slaes1_trigger