Danh mục

Bài giảng Microsoft SQL server: Chương 8 - Phạm Mạnh Cương

Số trang: 18      Loại file: ppt      Dung lượng: 381.00 KB      Lượt xem: 11      Lượt tải: 0    
Jamona

Hỗ trợ phí lưu trữ khi tải xuống: 18,000 VND Tải xuống file đầy đủ (18 trang) 0

Báo xấu

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

Thông tin tài liệu:

Chương 8 cung cấp những kiến thức cơ bản về trigger. Sau khi học xong chương này người học có thể hiểu được khái niệm về trigger, biết cách tạo trigger cho table bằng lệnh create trigger và bằng công cụ quản lý management studio. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Microsoft SQL server: Chương 8 - Phạm Mạnh CươngCHƯƠNGVIIITRIGGER Giảngviên:PhạmMạnhCương 1IKháiniệ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àngbuộc đa 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àngbuộc liên thuộc tính liên quan hệ, liên bộ liên quan hệ, ràng buộc chutrình.• Sử dụng lệnh ROLLBACK TRAN trong Trigger để bãi bỏ phát biểucập nhật khi cần thiết. 2IITạoTriggerchoTable: 1. Bằng Lệnh Create Trigger 2. Bằng công cụ quản lý Management Studio 31LệnhCreateTrigger: 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. 42Sửdụngbảngtạm:InsertedvàDeleted Khi 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 đa 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. 56Vídụ:Khithêm1CTHD,kiểmtraRB:Mộthóađơnkhôngcóquá10chitiếthóađơn. Create Trigger itrg_SoCTHD On CTHD For Insert As If (Select Count(a.SoHD) From CTHD a Join INSERTED b On a.SoHD = b.SoHD) >= 10 Begin Print ‘So CTHD Khong the > 10’ RollBack Tran End 7Vídụ:KhithêmchitiếthóađơnthìphảigiảmsốtồncCreate ủam ặthàngđãghitrênchitiếthóađơn. Trigger itrg_GiamTon On CTHDFor 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 ReturnEndUpdate MatHang Set SoTon = SoTon - SLFrom INSERTED Where MatHang.MaMH = INSERTED.MaMH 8b)KhiDeletemẫutin 9Vídụ:Khixóamộtchitiếthóađơnthìphảităngsốtồncủamặthàngđãghitrênchitiếthóađơn. Create Trigger trg_XoaCTHD On CTHD For Delete As Update MatHang Set SoTon = SoTon + SL From DELETED Where MatHang.MaMH = DELETED.MaMH Go 10c)KhiUpdatemẫutin 11Vídụ:Khisửasốlượngtrêncácchitiếthóađơnthìphảisửasốtồncủamặthàngđãghitrênchitiếthóađơn.Create Trigger utrg_SuaCTHD On CTHD For UpdateAs Declare @D int Select @D = Count( * ) From MatHang a, DELETED b, INSERTED c Where a.MaMH = b.MaMH And a.MaMH = c.MaMH And SoTon + b.SL - c.SL < 0If (@D > 0 )Begin Print ‘Khong du hang de ban’ RollBack TranReturnEnd Update MatHang Set SoTon = SoTon + b.SL - c.SL From MatHang a, DELETED b, INSERTED c Where a.MaMH = b.MaMH And a.MaMH = c.MaMH 12Vídụ:KhisửaSoHDcủaCTHD,kiểmtraRB:Mộthóađơnkhôngcóquá10chitiếthóađơn. Create Trigger utrg_SoCTHD On CTHD For Update As If (Select Count(a.SoHD) From CTHD a Join INSERTED b On a.SoHD = b.SoHD) > 10 Begin Print ‘So CTHD Khong the > 10’ RollBack Tran End 133NhậnbiếtCộtđượccậpnhật: • Hàm Update() : Trả về giá trị TRUE nếu được cập nhật dữ liệu. Ví dụ: Khi sửa thông tin chi tiết hóa đơn: • Nếu sửa SoHD thì kiểm tra RB Một hóa đơn không có quá 10 CTHD • Nếu sửa SL thì thay đổi số tồn của mặt hàng 14 Vídụ:SửdụnghàmUpdate If (@D > 0 )Create Trigger utrg_CTHD BeginOn CTHD For Update RollBack TranAs Return If Update(SoHD) ...

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