Danh mục

HỆ QUẢN TRỊ CSDL SQL SERVER - Chương 8: TRIGGER

Số trang: 18      Loại file: pdf      Dung lượng: 139.04 KB      Lượt xem: 10      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

I- Khái niệm:• Trigger là một thủ tục không có tham số • Một Table có thể chứa nhiều Trigger • Trigger tự động thực hiện khi một trong 3 phát biểu Insert, Update, Delete thay đổi dữ liệu trên table chứa trigger.
Nội dung trích xuất từ tài liệu:
HỆ QUẢN TRỊ CSDL SQL SERVER - Chương 8:TRIGGER HỆ QUẢN TRỊ CSDL SQL SERVERChương 8: TRIGGER Giáo viên: Tạ Thúc Nhu Khoa CNTT trường ĐH Lạc HồngI- Khái niệm:• Trigger là một thủ tục không có tham số• Một Table có thể chứa nhiều Trigger• Trigger tự động thực hiện khi một trong 3 phát biểu Insert, Update, Delete thay đổi dữ liệu trên table chứa trigger.• Trigger chỉ được thực hiện khi phát biểu cập nhật thoả mãn các ràng buộc đã khai báo trên Table. Do đó, Trigger thường được dùng để kiểm tra các ràng buộc mà không thể khai báo trên Table như các ràng buộc liên thuộc tính liên quan hệ, liên bộ liên quan hệ, ràng buộc chu trình.• Sử dụng lệnh ROLLBACK TRAN trong Trigger để bãi bỏ phát biểu cập nhật khi cần thiết. Mã hóa 2II- Tạo Trigger cho Table: 1. Dùng lệnh Create Trigger 2. Dùng công cụ Management Studio Mã hóa 31- Lệnh Create Trigger:CREATE TRIGGER ON [WITH ENCRYPTION] AFTER | FOR {DELETE, INSERT, UPDATE} AS • Tập con của { DELETE, INSERT, UPDATE} dùng chỉ định những phát biểu cập nhật nào trên Table sẽ kích hoạt Trigger. Mã hóa 42- Sử dụng bảng tạm: Inserted và DeletedKhi thực hiện Trigger, SQL tự động tạo 2 bảng tạm có cùng cấu trúc với Table được cập nhật:• Bảng INSERTED: dùng chứa tạm các mẫu tin mới khi thực hiện lệnh Insert hoặc mẫu tin chứa dữ liệu đã sửa đổi khi thực hiện lệnh Update.• Bảng DELETED : dùng chứa tạm các mẫu tin bị xóa khi thực hiện lệnh Delete hoặc mẫu tin chứa dữ liệu cũ khi thực hiện lệnh Update.Ta sử dụng dữ liệu trên các table này để thực hiện xử lý bên trong Trigger liên quan đến các mẫu tin vừa mới thêm, sửa hay xóa. Mã hóa 5a) Khi Insert mẫu tin mới CTHD INSERTED SoHD MaLH SL DGBan SoHD MaLH SL DGBan 10248 56 10 4 10249 100 20 9 10248 12 4 1 10248 23 9 6 10249 10 8 2 DELETED 10249 30 3 8 SoHD MaLH SL DGBan 10249 9 100 20 10249 100 20 9Ví dụ : Kiểm tra RB: Một hóa đơn không có quá 10 chi tiết hóa đơn. T S X CTHD + + - [SoHD] Mã hóa 6Ví dụ: Khi thêm 1 CTHD, kiểm tra RB: Mộthóa đơn không có quá 10 chi tiết hóa đơn.Create Trigger itrg_SoCTHD On CTHDFor InsertAsIf (Select Count(a.SoHD) From CTHD a Join INSERTED b On a.SoHD = b.SoHD) >= 10Begin Print ‘So CTHD Khong the > 10’ RollBack TranEnd Mã hóa 7Ví dụ: Khi thêm chi tiết hóa đơn thì phải giảm số tồncủa mặt hàng đã ghi trên chi tiết hóa đơn.Create Trigger itrg_GiamTon On CTHD For InsertAs Declare @D int Select @D = Count( * ) From MatHang a Join INSERTED b On a.MaMH = b.MaMH Where SoTon - b.SL < 0 If (@D > 0 ) Begin Print ‘Khong du hang de ban’ RollBack Tran Return End Update MatHang Set SoTon = SoTon - SL From INSERTED Where MatHang.MaMH = INSERTED.MaMH Mã hóa 8b) Khi Delete mẫu tin CTHD INSERTED SoHD MaLH SL DGBan SoHD MaLH SL DGBan 10248 56 10 4 10248 12 4 1 DELETED 10248 23 9 6 SoHD MaLH SL DGBan 10249 10 8 2 10249 100 20 9 10249 30 3 ...

Tài liệu được xem nhiều: