DB2觸發(fā)器
db2觸發(fā)器
本章介紹db2的觸發(fā)器,它們的類型,創(chuàng)建和刪除觸發(fā)器。
觸發(fā)器是一組動作,在數(shù)據(jù)庫響應insert,update或delete操作上指定的表執(zhí)行。觸發(fā)器都在數(shù)據(jù)庫中存儲一次。他們處理的數(shù)據(jù)管理。它們可以被訪問并在多個應用程序共享。使用觸發(fā)器的優(yōu)點是,任何變化需要在應用程序完成的,它完成在觸發(fā);而不是改變正在訪問觸發(fā)每個應用程序。觸發(fā)器易于維護以及更快地強制應用程序的開發(fā)。觸發(fā)器使用sql語句“create trigger”定義。
觸發(fā)器類型
有三種類型的觸發(fā)器:
1. before觸發(fā)器
在任何sql操作之前執(zhí)行。
2. after觸發(fā)器
在任何sql操作之后執(zhí)行。
創(chuàng)建before觸發(fā)器
讓我們來看看如何創(chuàng)建觸發(fā)器的序列:
語法:
db2 create sequence <seq_name>
例如:用于創(chuàng)建表shopper.sales1序列的觸發(fā)器
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>
示例:創(chuàng)建觸發(fā)器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
現(xiàn)在嘗試插入任何值:
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.
創(chuàng)建after觸發(fā)器
讓我們來看看如何建立一個after觸發(fā)器:
語法
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.
刪除觸發(fā)器
下面是一個數(shù)據(jù)庫的觸發(fā)器被刪除:
語法
db2 drop trigger <trigger_name>
例子:
db2 drop trigger slaes1_trigger
相關文章