ROLLBACK TRANSACTION và trigger 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ụ : 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. | Simpo PDFKMergeandSplit Unregistered Version - http SQL ROLLBACK TRANSACTION và trigger 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ụ 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ụ 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 1 Cách sử dụng và ý nghĩa của câu lệnh ROLLBACK TRANSACTION được bàn luận chi tiết ở chương 6. 121 Sưu tầm bởi Simpo PDFKMergeandSplit Unregistered Version - http SQL_ 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 Sử dụng trigger trong trường hợp câu lệnh INSERT UPDATE và DELETE có tác động đến nhiều dòng dữ liệu Trong các ví dụ trước các trigger chỉ thực sự hoạt động đúng mục đích khi các câu lệnh kích hoạt trigger chỉ có tác dụng đối với đúng .