- DB2 教程
- 首頁
- DB2 - 簡介
- DB2 - 伺服器安裝
- DB2 - 例項
- DB2 - 資料庫
- DB2 - 緩衝池
- DB2 - 表空間
- DB2 - 儲存組
- DB2 - 模式
- DB2 - 資料型別
- DB2 - 表
- DB2 - 別名
- DB2 - 約束
- DB2 - 索引
- DB2 - 觸發器
- DB2 - 序列
- DB2 - 檢視
- DB2 與 XML
- DB2 - 備份和恢復
- DB2 - 資料庫安全
- DB2 - 角色
- DB2 - LDAP
- DB2 有用資源
- DB2 - 問答
- DB2 - 快速指南
- DB2 - 有用資源
- DB2 - 討論
DB2 - 觸發器
本章描述觸發器,其型別,以及觸發器的建立和刪除。
介紹
觸發器是一組動作,這些動作用於響應資料庫中指定表上的 INSERT、UPDATE 或 DELETE 操作。觸發器一次性儲存在資料庫中。它們處理資料的治理。它們可以被多個應用程式訪問和共享。使用觸發器的優點是,如果應用程式需要進行任何更改,則可以在觸發器處進行更改;而不是更改每個訪問觸發器的應用程式。觸發器易於維護,並且可以加快應用程式的開發速度。觸發器使用 SQL 語句“CREATE TRIGGER”定義。
觸發器的型別
觸發器有兩種型別
1. BEFORE 觸發器
它們在任何 SQL 操作之前執行。
2. AFTER 觸發器
它們在任何 SQL 操作之後執行。
建立 BEFORE 觸發器
讓我們看看如何建立一個觸發器序列
語法
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.
建立 AFTER 觸發器
讓我們看看如何建立一個 AFTER 觸發器
語法
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>
示例
db2 drop trigger slaes1_trigger
廣告
