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