В этой главе описываются триггеры, их типы, создание и удаление триггеров.
Вступление
Триггер — это набор действий, которые выполняются для ответа на операцию 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>
Пример: