Bài giảng SQL server 2005: Chương 8 - Phạm Mạnh Cương
lượt xem 6
download
Bài giảng "SQL server 2005 - Chương 8: Trigger" trình bày khái niệm Trigger, tạo Trigger cho Table, lệnh create trigger, sử dụng bảng tạm, nhận biết cột được cập nhật, sửa, xóa trigger. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng SQL server 2005: Chương 8 - Phạm Mạnh Cương
- CHƯƠNG VIII TRIGGER Giảng viên: Phạm Mạnh Cương 1
- 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. • 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 đ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à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. 2
- II Tạo Trigger cho Table: 1. Bằng Lệnh Create Trigger 2. Bằng công cụ quản lý Management Studio 3
- 1 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. 4
- 2 Sử dụng bảng tạm: Inserted và 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. 5
- 6
- Ví dụ: Khi thêm 1 CTHD, kiểm tra RB: Một hóa đơn không có quá 10 chi tiết hó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 7
- Ví dụ: Khi thêm chi tiết hóa đơn thì phải giảm số tồn cCreate Trigger itrg_GiamTon On CTHD ủa mặt hàng đã ghi trên chi tiết hóa đơn. For Insert As 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 8
- b) Khi Delete mẫu tin 9
- Ví dụ: Khi xóa một chi tiết hóa đơn thì phải tăng số tồn của mặt hàng đã ghi trên chi tiết hó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 10
- c) Khi Update mẫu tin 11
- Ví dụ: Khi sửa số lượng trên các chi tiết hóa đơn thì phải sửa số tồn của mặt hàng đã ghi trên chi tiết hóa đơn. Create Trigger utrg_SuaCTHD On CTHD For Update As 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 < 0 If (@D > 0 ) Begin Print ‘Khong du hang de ban’ RollBack Tran Return End 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 12
- Ví dụ: Khi sửa SoHD của CTHD, kiểm tra RB: Một hóa đơn không có quá 10 chi tiết hó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 13
- 3 Nhận biết Cột được cập nhậ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ụng hàm Update If (@D > 0 ) Create Trigger utrg_CTHD Begin On CTHD For Update RollBack Tran As Return If Update(SoHD) End If (Select Count(a.SoHD) Update MatHang From CTHD a, INSERTED b Set SoTon = SoTon + b.SL – c.SL Where a.SoHD = b.SoHD)>=10 From MatHang a, DELETED b, Begin INSERTED c RollBack Tran Where a.MaMH = b.MaMH And Return a.MaMH = c.MaMH End End If Update(SL) Begin 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 < 0 15
- 4 Thực hiện hay không thực hiện Trigger ALTER TABLE ENABLE | DISABLE TRIGGER ALL | [,…n] Ví dụ: Không thực hiện tất cả Triggers của table CTHD ALTER TABLE DISABLE TRIGGER ALL Ví dụ: Không thực hiện Trigger itrg_SoCTHD và utrg_SoCTHD của table CTHD ALTER TABLE DISABLE TRIGGER itrg_SoCTHD, utrg_SoCTHD 16
- III Sửa, Xóa Trigger: 1. Sửa Trigger: ALTER TRIGGER ON [WITH ENCRYPTION] AFTER | FOR {DELETE, INSERT, UPDATE} AS 2. Xóa Trigger: DROP TRIGGER [,…n] 17
- CẢM ƠN 18
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng SQL server 2005: Chương 1 - Phạm Mạnh Cương
6 p | 89 | 12
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Sao lưu và phục hồi dữ liệu trong SQL server - Phan Hiền
12 p | 150 | 10
-
Bài giảng Microsoft SQL server: Chương 1 - Phạm Mạnh Cương
11 p | 81 | 10
-
Bài giảng SQL server 2005: Chương 5 - Phạm Mạnh Cương
15 p | 57 | 10
-
Bài giảng SQL server 2005: Chương 2 - Phạm Mạnh Cương
15 p | 92 | 9
-
Bài giảng SQL server 2005: Chương 4 - Phạm Mạnh Cương
51 p | 72 | 9
-
Bài giảng SQL server 2005: Chương 7 - Phạm Mạnh Cương
19 p | 75 | 8
-
Bài giảng SQL server 2005: Chương 6 - Phạm Mạnh Cương
11 p | 61 | 8
-
Bài giảng SQL server 2005: Chương 3 - Phạm Mạnh Cương
43 p | 67 | 7
-
Bài giảng Thực tập chuyên ngành (SQL Server) - Trường Đại học Hàng Hải Việt Nam
46 p | 85 | 6
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Giao tác trong SQL server - Phan Hiền
12 p | 141 | 3
-
Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 1 - Hồ Thị Anh Đào
38 p | 49 | 3
-
Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 8 - Hồ Thị Anh Đào
22 p | 36 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn