Учебники

DB2 – триггеры

В этой главе описываются триггеры, их типы, создание и удаление триггеров.

Вступление

Триггер – это набор действий, которые выполняются для ответа на операцию INSERT, UPDATE или DELETE для указанной таблицы в базе данных. Триггеры хранятся в базе данных сразу. Они управляют управлением данными. Они могут быть доступны и доступны для нескольких приложений. Преимущество использования триггеров состоит в том, что если в приложении необходимо внести какие-либо изменения, это делается в триггере; вместо изменения каждого приложения, которое обращается к триггеру. Триггеры просты в обслуживании и обеспечивают более быструю разработку приложений. Триггеры определяются с помощью оператора SQL «CREATE TRIGGER».

Типы триггеров

Есть два типа триггеров:

1. ДО триггеров

Они выполняются перед любой операцией SQL.

2. ПОСЛЕ триггеров

Они выполняются после любой операции SQL.

Создание ПЕРЕД триггером

Давайте посмотрим, как создать последовательность триггера:

Синтаксис:

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. 

Создание триггера ПОСЛЕ

Давайте посмотрим, как создать триггер после:

Синтаксис:

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>  

Пример: