ROLLBACK TRANSACTION và trigger

Một phần của tài liệu tổng quan về sql (Trang 121 - 122)

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

Một phần của tài liệu tổng quan về sql (Trang 121 - 122)