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