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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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.

CHƯƠNG VIII TRIGGER Giảng viên: Phạm Mạnh Cương I- Khái niệm: • Trigger thủ tục khơng có tham số • Một Table chứa nhiều Trigger • Trigger tự động thực phát biểu Insert, Update, Delete thay đổi liệu table chứa trigger • Trigger thực phát biểu cập nhật thoả mãn ràng buộc đa khai báo Table Do đó, Trigger thường dùng để kiểm tra ràng buộc mà khai báo Table ràng buộc liên thuộc tính liên quan hệ, liên liên quan hệ, ràng buộc chu trình • Sử dụng lệnh ROLLBACK TRAN Trigger để bãi bỏ phát biểu cập nhật cần thiết II- Tạo Trigger cho Table: Bằng Lệnh Create Trigger Bằng công cụ quản lý Management Studio 1- Lệnh Create Trigger: CREATE TRIGGER ON [WITH ENCRYPTION] AFTER | FOR {DELETE, INSERT, UPDATE} AS • Tập { DELETE, INSERT, UPDATE} dùng định phát biểu cập nhật Table kích hoạt Trigger 2- Sử dụng bảng tạm: Inserted Deleted Khi thực Trigger, SQL tự động tạo bảng tạm có cấu trúc với Table cập nhật: • Bảng INSERTED: dùng chứa tạm mẫu tin thực lệnh Insert mẫu tin chứa liệu đa sửa đổi thực lệnh Update • Bảng DELETED : dùng chứa tạm mẫu tin bị xóa thực lệnh Delete mẫu tin chứa liệu cũ thực lệnh Update Ta sử dụng liệu table để thực xử lý bên Trigger liên quan đến mẫu tin vừa thêm, sửa hay xóa Ví dụ: Khi thêm CTHD, kiểm tra RB: Một Create Trigger itrg_SoCTHD On CTHD hóa đơn khơng có q 10 chi tiết hóa For Insert đơn 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 Ví dụ: Khi thêm chi tiết hóa đơn phải giảm số tồn Createmặt Trigger itrg_GiamTon CTHDtrên chi tiết hóa đơn hàng đãOnghi For Insert As Declare @D int Select @D = Count( * ) From MatHang a Join INSERTED b On a.MaMH = b.MaMH Where SoTon - b.SL < If (@D > ) Begin Print ‘Khong du hang de ban’ RollBack Tran Return End Update MatHang Set SoTon = SoTon - SL From INSERTED Where MatHang.MaMH = INSERTED.MaMH b) Khi Delete mẫu tin Ví dụ: Khi xóa chi tiết hóa đơn phải tăng số tồn mặt hàng ghi chi tiết hóa Create Trigger trg_XoaCTHD On CTHD đơn 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 chi tiết hóa đơn phải sửa số tồn mặt hàng ghi 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 < If (@D > ) 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 CTHD, kiểm tra RB: Một hóa đơn khơng có q 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ập nhật : • Hàm Update() : Trả giá trị TRUE cập nhật liệu Ví dụ: Khi sửa thơng tin chi tiết hóa đơn: • Nếu sửa SoHD kiểm tra RB "Một hóa đơn khơng có q 10 CTHD • Nếu sửa SL thay đổi số tồn mặt hàng 14 Ví dụ: Sử dụng hàm Update Create Trigger utrg_CTHD On CTHD For Update As If Update(SoHD) If (Select Count(a.SoHD) From CTHD a, INSERTED b Where a.SoHD = b.SoHD)>=10 Begin RollBack Tran Return 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 < If (@D > ) Begin 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 End 15 4- Thực hay không thực Trigger ALTER TABLE ENABLE | DISABLE TRIGGER ALL | [,…n] Ví dụ: Khơng thực tất Triggers table CTHD ALTER TABLE DISABLE TRIGGER ALL Ví dụ: Khơng thực Trigger itrg_SoCTHD utrg_SoCTHD table CTHD ALTER TABLE DISABLE TRIGGER itrg_SoCTHD, utrg_SoCTHD 16 III- Sửa, Xóa Trigger: Sửa Trigger: ALTER TRIGGER ON [WITH ENCRYPTION] AFTER | FOR {DELETE, INSERT, UPDATE} AS Xóa Trigger: DROP TRIGGER [,…n] 17 CẢM ƠN 18 ... UPDATE} AS • Tập { DELETE, INSERT, UPDATE} dùng định phát biểu cập nhật Table kích hoạt Trigger 2- Sử dụng bảng tạm: Inserted Deleted Khi thực Trigger, SQL tự động tạo bảng tạm... itrg_SoCTHD, utrg_SoCTHD 16 III- Sửa, Xóa Trigger: Sửa Trigger: ALTER TRIGGER ON [WITH ENCRYPTION] AFTER | FOR {DELETE, INSERT, UPDATE} AS Xóa Trigger: DROP... INSERTED b On a.MaMH = b.MaMH Where SoTon - b.SL < If (@D > ) Begin Print ‘Khong du hang de ban’ RollBack Tran Return End Update MatHang Set SoTon = SoTon - SL From INSERTED Where MatHang.MaMH =

Ngày đăng: 11/05/2021, 02:49

Mục lục

    II- Tạo Trigger cho Table:

    1- Lệnh Create Trigger:

    2- Sử dụng bảng tạm: Inserted và Deleted

    b) Khi Delete mẫu tin

    c) Khi Update mẫu tin

    3- Nhận biết Cột được cập nhật :

    Ví dụ: Sử dụng hàm Update

    4- Thực hiện hay không thực hiện Trigger

    III- Sửa, Xóa Trigger:

Tài liệu cùng người dùng

Tài liệu liên quan