Sử dụng mệnh đề IF UPDATE trong trigger

Một phần của tài liệu GIÁO TRÌNH SQL (Trang 157 - 159)

Thay vỡ chỉđịnh một trigger được kớch hoạt trờn một bảng, ta cú thể chỉđịnh trigger được kớch hoạt và thực hiện những thao tỏc cụ thể khi việc thay đổi dữ liệu chỉ

liờn quan đến một số cột nhất định nào đú của cột. Trong trường hợp này, ta sử dụng mệnh đề IF UPDATE trong trigger. IF UPDATE khụng sử dụng được đối với cõu lệnh DELETE.

Vớ dụ 5.13: Xột lại vớ dụ với hai bảng MATHANG và NHATKYBANHANG, trigger dưới đõy được kớch hoạt khi ta tiến hành cập nhật cột SOLUONG cho một bản ghi của bảng NHATKYBANHANG (lưu ý là chỉ cập nhật đỳng một bản ghi)

CREATE TRIGGER trg_nhatkybanhang_update_soluong ON nhatkybanhang

FOR UPDATE AS

IF UPDATE(soluong) UPDATE mathang

SET mathang.soluong = mathang.soluong - (inserted.soluong-deleted.soluong) FROM (deleted INNER JOIN inserted ON

deleted.stt = inserted.stt) INNER JOIN mathang ON mathang.mahang = deleted.mahang Với trigger ở vớ dụ trờn, cõu lệnh: UPDATE nhatkybanhang SET soluong=soluong+20 WHERE stt=1 119

Khoa CNTT - Trường ĐHKH Huế Giỏo trỡnh SQL

sẽ kớch hoạt trigger ứng với mệnh đề IF UPDATE (soluong) và cõu lệnh UPDATE trong trigger sẽđược thực thi. Tuy nhiờn cõu lệnh:

UPDATE nhatkybanhang

SET nguoimua='Mai Hữu Toàn' WHERE stt=3

lại khụng kớch hoạt trigger này.

Mệnh đề IF UPDATE cú thể xuất hiện nhiều lần trong phần thõn của trigger. Khi

đú, mệnh đề IF UPDATE nào đỳng thỡ phần cõu lệnh của mệnh đềđú sẽđược thực thi khi trigger được kớch hoạt. Vớ dụ 5.14: Giả sử ta định nghĩa bảng R như sau: CREATE TABLE R ( A INT, B INT, C INT )

và trigger trg_R_update cho bảng R:

CREATE TRIGGER trg_R_test ON R FOR UPDATE AS IF UPDATE(A) Print 'A updated' IF UPDATE(C) Print 'C updated' Cõu lệnh:

UPDATE R SET A=100 WHERE A=1

sẽ kớch hoạt trigger và cho kết quả là:

A updated

và cõu lệnh:

UPDATE R SET C=100 WHERE C=2

cũng kớch hoạt trigger và cho kết quả là:

C updated

cũn cõu lệnh:

UPDATE R SET B=100 WHERE B=3

hiển nhiờn sẽ khụng kớch hoạt trigger

Khoa CNTT - Trường ĐHKH Huế Giỏo trỡnh SQL

Một phần của tài liệu GIÁO TRÌNH SQL (Trang 157 - 159)

Tải bản đầy đủ (DOC)

(196 trang)
w