Một trigger cú khả năng nhận biết được sự thay đổi về mặt dữ liệu trờn bảng dữ liệu, từ đú cú thể phỏt hiện và huỷ bỏ những thao tỏc khụng đảm bảo tớnh toàn vẹn dữ liệu. Trong một trigger, để huỷ bỏ tỏc dụng của cõu lệnh làm kớch hoạt trigger, ta sử dụng cõu lệnh(1):
ROLLBACK TRANSACTION
Vớ dụ 5.15: Nếu trờn bảng MATHANG, ta tạo một trigger như sau:
CREATE TRIGGER trg_mathang_delete ON mathang
FOR DELETE AS
ROLLBACK TRANSACTION
Thỡ cõu lệnh DELETE sẽ khụng thể cú tỏc dụng đối với bảng MATHANG. Hay núi cỏch khỏc, ta khụng thể xoỏ được dữ liệu trong bảng.
Vớ dụ 5.16: Trigger dưới đõy được kớch hoạt khi cõu lệnh INSERT được sử dụng để bổ
sung một bản ghi mới cho bảng NHATKYBANHANG. Trong trigger này kiểm tra điều kiện hợp lệ của dữ liệu là số lượng hàng bỏn ra phải nhỏ hơn hoặc bằng số lượng hàng hiện cú. Nếu điều kiện này khụng thoả món thỡ huỷ bỏ thao tỏc bổ sung dữ liệu.
CREATE TRIGGER trg_nhatkybanhang_insert ON NHATKYBANHANG
FOR INSERT AS
DECLARE @sl_co int /* Số lượng hàng hiện cú */ DECLARE @sl_ban int /* Số lượng hàng được bỏn */
DECLARE @mahang nvarchar(5) /* Mó hàng được bỏn */
SELECT @mahang=mahang,@sl_ban=soluong FROM inserted
SELECT @sl_co = soluong
FROM mathang where mahang=@mahang
/*Nếu số lượng hàng hiện cú nhỏ hơn số lượng bỏn thỡ huỷ bỏ thao tỏc bổ sung dữ liệu */
IF @sl_co<@sl_ban
ROLLBACK TRANSACTION /* Nếu dữ liệu hợp lệ
thỡ giảm số lượng hàng hiện cú */ ELSE
UPDATE mathang
SET soluong=soluong-@sl_ban WHERE mahang=@mahang