DB2 - Trình kích hoạt
Chương này mô tả các trình kích hoạt, các loại của chúng, cách tạo và loại bỏ các trình kích hoạt.
Giới thiệu
Trình kích hoạt là một tập hợp các hành động, được thực hiện để đáp ứng thao tác CHÈN, CẬP NHẬT hoặc XÓA trên một bảng được chỉ định trong cơ sở dữ liệu. Các kích hoạt được lưu trữ trong cơ sở dữ liệu cùng một lúc. Họ xử lý việc quản trị dữ liệu. Chúng có thể được truy cập và chia sẻ giữa nhiều ứng dụng. Lợi thế của việc sử dụng trình kích hoạt là, nếu bất kỳ thay đổi nào cần được thực hiện trong ứng dụng, nó sẽ được thực hiện tại trình kích hoạt; thay vì thay đổi từng ứng dụng đang truy cập trình kích hoạt. Các trình kích hoạt dễ bảo trì và chúng thực thi phát triển ứng dụng nhanh hơn. Các trình kích hoạt được định nghĩa bằng câu lệnh SQL “CREATE TRIGGER”.
Các loại trình kích hoạt
Có hai loại trình kích hoạt:
1. TRƯỚC các trình kích hoạt
Chúng được thực thi trước bất kỳ hoạt động SQL nào.
2. SAU kích hoạt
Chúng được thực thi sau bất kỳ hoạt động SQL nào.
Tạo trình kích hoạt TRƯỚC
Hãy để chúng tôi xem cách tạo chuỗi trình kích hoạt:
Syntax:
db2 create sequence <seq_name>
Example: Tạo chuỗi trình kích hoạt cho 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: Tạo trình kích hoạt cho bảng shopper.sales1 để tự động chèn các số khóa chính
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
Bây giờ hãy thử chèn bất kỳ giá trị nào:
db2 insert into shopper.sales1(itemname, qty, price)
values('bicks', 100, 24.00)
Lấy giá trị từ bảng
Hãy để chúng tôi xem cách lấy các giá trị từ một bảng:
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.
Tạo trình kích hoạt SAU KHI
Hãy để chúng tôi xem cách tạo trình kích hoạt sau:
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: [Để chèn và truy xuất các giá trị]
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.
Bỏ cò súng
Đây là cách một trình kích hoạt cơ sở dữ liệu bị loại bỏ:
Syntax:
db2 drop trigger <trigger_name>
Example:
db2 drop trigger slaes1_trigger