1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 6 - Lê Thị Minh Nguyện

8 3 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 1,06 MB

Nội dung

Cùng nắm kiến thức trong chương này thông qua việc tìm hiểu các nội dung sau: Khái niệm, công dụng trigger, các dạng ràng buộc toàn vẹn, ràng buộc dữ liệu toàn vẹn với trigger, cơ chế hoạt động của trigger. Mời các bạn cùng tham khảo!

8/25/2017 Nội dung Khái niệm Chương Bẫy lỗi (Trigger) Công dụng trigger Các dạng ràng buộc toàn vẹn Ràng buộc liệu toàn vẹn với trigger GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn Cơ chế hoạt động trigger Hệ quản trị Cơ sở liệu Khái niệm Cơng dụng trigger • Trigger dạng đặc biệt thủ tục lưu trữ thực thi • Đảm bảo tính tồn vẹn CSDL tự động người dùng áp dụng câu lệnh cập nhật liệu lên table định nhằm mục đích đảm bảo tính tồn • Kiểm sốt liệu có CSDL thay đổi giá trị mẩu tin bảng vẹn liệu Nếu trigger bị vi phạm, câu lệnh không • Kiểm tra liệu nhập có thỏa điều kiện khơng thực thi • Kiểm chứng xóa mẩu tin bảng • Tự động cập liệu bảng B bảng A thay đổi 8/25/2017 Các dạng ràng buộc toàn vẹn Ràng buộc liệu toàn vẹn với trigger ??? Hệ quản trị Cơ sở liệu 4.1 Thêm mẩu tin 4.2 Xóa mẩu tin 4.3 Sửa mẩu tin 4.1 Thêm mẩu tin 4.2 Xóa mẩu tin • Kiểm tra ràng buộc liệu • Phụ thuộc khóa ngoại • Khố ngoại • Liên liên quan hệ • Miền giá trị • Liên quan hệ • Liên thuộc tính quan hệ • Liên thuộc tính nhiều quan hệ Hệ quản trị Cơ sở liệu 8/25/2017 4.3 Sửa mẩu tin Cơ chế hoạt động trigger • biến cố kích hoạt trigger • Khố ngoại • INSERT • UPDATE • DELETE • Miền giá trị • Trigger lưu trữ liệu mẩu tin vừa thêm vào table có tên INSERTED • Liên quan hệ • Trigger lưu trữ liệu mẩu tin vừa xoá vào table có tên DELETED • Liên thuộc tính quan hệ • Trigger lưu trữ liệu mẩu tin vừa cập nhật phối hợp table DELELTED INSERTED • Liên thuộc tính nhiều quan hệ Cơ chế hoạt động trigger (tt) Cơ chế hoạt động trigger (tt) • Cú pháp: Có thể thay FOR After mặc định 10 CREATE TRIGGER Them_HH ON HANG_HOA AFTER INSERT AS Select * From Inserted CREATE TRIGGER Tên_trigger ON tên_table| tên_view AFTER | INSTEAD OF biến_cố_kích_hoạt_trigger AS Các câu lệnh T-SQL • Thêm liệu INSERT HANG_HOA(MaHH, TenHH) VALUES(‘TV01’, ‘Tivi Sony’) 11 12 8/25/2017 Cơ chế hoạt động trigger (tt) Cơ chế hoạt động trigger (tt) CREATE TRIGGER SUA_HH ON HANG_HOA AFTER UPDATE AS Select * From Inserted Select * From Deleted CREATE TRIGGER Xoa_HH ON HANG_HOA AFTER DELETE AS Select * From Inserted Select * From Deleted • Cập nhật liệu UPDATE HANG_HOA SET Ten_HH = ‘Man Hinh Sony’ WHERE MaHH = ‘TV01’ • Xóa liệu DELETE HANG_HOA WHERE MaHH = ‘TV01’ 13 Ví dụ 14 Ví dụ (tt) • HOADON_DH(MaHD, NgayDH, MaKH) • PHIEU_XUAT(MaPX, NgayXuat, #MaHD ) • CHITIET_DH(MAHD, MaHH, SoLuong, DonGia) • Xây dựng trigger bảng PHIEU_XUAT để kiểm tra ràng buộc toàn vẹn liệu người dùng thêm thông tin phiếu xuất hàng cho bảng hoá đơn đặt hàng trước Các ràng buộc tồn vẹn liệu bao gồm • Khố ngoại: cần kiểm tra số đặt hàng phải tồn bảng đơn đặt hàng • Miền giá trị: cần kiểm tra ngày giao hàng phải sau ngày đặt hàng 15 CREATE TRIGGER tg_PhieuXuat_Insert ON PHIEU_XUAT FOR INSERT AS DECLARE @NgayHD datetime, @ErrMsg varchar(200) Kiểm tra số hố đơn có bảng DONDH không? IF NOT EXISTS(Select * From Inserted I, HOADON_DH D Where I.MaHD= D.MaHD) Begin Rollback Tran Raiserror(‘Số đơn đặt hàng không tồn tại’, 16,1) Return End 16 8/25/2017 Ví dụ (tt) Ví dụ Tính ngày đặt hàng Select @NgayDH=NgayDH From HoaDon_DH D, Inserted I Where D.MaHD = I.MaHD Kiểm tra ngày giao hàng phải sau ngày đặt hàng IF @NgayDH < (Select ngayxuat From Inserted) Begin Set @ErrMsg = ‘ngày giao hàng phải sau ngày:’+ Convert(char(10), ngayDH, 103 ) Raierror(@ErrMsg,16,1) Rollback tran End • Kiểm tra ràng buộc • Kiểm tra ràng buộc khóa ngoại • Ví dụ: xố số hoá đơn đặt hàng bảng HOADON_DH cần phải kiểm tra RBTV liệu sau: • Kiểm tra xem đơn đặt hàng bị xoá xuất hàng chưa? Nếu xuất thơng báo khơng thể xố đơn đặt hàng • Ngược lại xoá liệu liên quan bên bảng chi tiết đơn đặt hàng (CHITIET_HD) 17 Ví dụ (tt) CREATE TRIGGER tg_HOADON_Delete ON HOADON_DH FOR DELETE AS DECLARE @SoPX char(5), @ErrMsg char(200), @Delete_Err int Kiểm tra xem đơn hàng xuất chưa IF EXISTS(Select MaPX From PHIEU_XUAT Where MaHD IN(Select MaHD From Deleted)) Begin Select @MaPX = MaPX From PHIEU_XUAT Where MaHD In(Select MaHD From Deleted) Set @ErrMsg = ‘Đơn đặt hàng nhập theo ’+ ‘số xuất hàng ’+ @SoPX + char(13) + ‘.Không thể huỷ được’ RaiseError(@ErrMsg,16,1) Rollback tran End 18 Ví dụ (tt) Else Begin Xoá tự động chi tiết đơn đặt hàng liên quan Delete FROM CHITIET_DH Where MaHD In(Select MaHD From DELETED) Set @Delete_Err = @@ERROR IF @Delete_Err Begin Set @ErrMsg = ‘Lỗi vi phạm xóa bảng chi tiết đặt hàng’ RaisError(@ErrMsg, 16, 1) Rollback Tran End End 19 20 8/25/2017 Hàm Update Ví dụ Sửa đổi thông tin số đặt hàng bên bảng HOADON_DH cần phải kiểm tra • Ý nghĩa • Kiểm tra liệu cột bên bảng có bị thay đổi trigger sửa đổi liệu • Cú pháp ràng buộc tồn vẹn liệu sau: • Khơng cho phép sửa đổi liệu cột MaDH MaKH liệu ảnh hưởng đến nhiều bảng • Sửa đổi giá trị cột ngày đặt hang (NgayDH) phải đảm bảo luôn trước UPDATE (tên_cột) (biểu thức luận lý) • Tên_cột: tên cột mà muốn kiểm tra xem liệu có bị sửa đổi trigger khơng • Biểu thức luận lý: trả True giá trị liệu cột bị sửa đổi, ngược lại trả False giá trị liệu cột không bị sửa đổi ngày giao hàng số đặt hàng (nếu đơn đặt hàng có giao hàng) HOADON_DH(MaHD, NgayDH, MaKH) PHIEU_XUAT(MaPX, NgayXuat, #MaHD ) 21 Ví dụ (tt) 22 Ví dụ (tt) Khi sửa đổi ngày đặt hàng IF Update(NgayDH) Begin Kiểm tra đơn đặt hàng xuất chưa IF EXISTS (Select MaPX From PHIEU_XUAT PX, Deleted d where px.madh=d.madh) Begin Tính ngày nhập hàng Select @MinNgayXH = Min(NgayXuat) From PHIEU_XUAT PX, DELETED D Where PX.MaDH = D.MaDH CREATE TRIGGER tg_HOADON_DH_Update ON HOADON_DH FOR UPDATE AS Declare @MinNgayXH date, @ErrMsg varchar(200) Khi sửa đổi cột MaDH MaKH IF Update(MaDH) OR Update(MaKH) Begin Rollback Tran Set @ErrMsg = ‘Không thể thay đổi số đặt hàng mã khách hàng’ RaisError(@ErrMsg, 16, 1) Return End 23 24 8/25/2017 Ví dụ (tt) Ví dụ kiểm tra giá trị ngày đăt hàng sau sửa đổi phải trước ngày giao hàng IF @MinNgayXH < (Select NgayDH From Inserted) Begin Rollback tran Set @ErrMsg = ‘Ngày đặt hàng phải trước ngày:’ + Convert(char(10), @MinNgayXH, 103) RaisError(@ErrMsg, 16, 1) End End End Cài đặt trigger ngăn chặn tạo login cấp độ server IF EXISTS (SELECT * FROM sys.server_triggers WHERE name = ‘rtg_KhongTaoLoginMoi’) DROP TRIGGER rtg_KhongTaoLoginMoi ON ALL SERVER GO CREATE TRIGGER rtg_KhongTaoLoginMoi ON ALL SERVER FOR CREATE_LOGIN AS PRINT N'Phi DROP trigger rtg_KhongTaoLoginMoi trưc to account’ rollback 25 26 Trigger Trigger Cho phép (enable) vơ hiệu hóa (disable) trigger: ENABLE | DISABLE TRIGGER trigger_name ON {OBJECT | DATABASE | SERVER} Hiển thị thông tin vê triggger: Tất đối tượng CSDL liệt kê bảng hệ thống sysobjects Cột type sysobjects xác định trigger với chữ viết tắt TR Vơ hieu hóa trigger rtg_KhongTaoLoginMoi: disable trigger rtg_KhongTaoLoginMoi SELECT * FROM sysobjects WHERE type=‘TR’ Cho phép trigger rtg_KhongTaoLoginMoi hoạt động trở lại: enable trigger rtg_KhongTaoLoginMoi 27 28 8/25/2017 Trigger Trigger Cú pháp hiển thị thông tin triggger: sp_help tên_trigger Hiển thị thông tin trigger tgr_test: Sp_help tgr_test • Câu lệnh Create triggger trigger lưu trữ bảng hệ thống syscomments Người dùng hiển thị nội dung câu lệnh trigger cách sử dụng thủ tục sp_helptext • Hiển thị nội dung trigger tgr_test: Sp_helptext tgr_test 29 Hệ quản trị Cơ sở liệu 30 31 ... ngoại • Liên liên quan hệ • Miền giá trị • Liên quan hệ • Liên thuộc tính quan hệ • Liên thuộc tính nhiều quan hệ Hệ quản trị Cơ sở liệu 8/25/2017 4.3 Sửa mẩu tin Cơ chế hoạt động trigger • biến cố... ??? Hệ quản trị Cơ sở liệu 4.1 Thêm mẩu tin 4.2 Xóa mẩu tin 4.3 Sửa mẩu tin 4.1 Thêm mẩu tin 4.2 Xóa mẩu tin • Kiểm tra ràng buộc liệu • Phụ thuộc khóa ngoại • Khố ngoại • Liên liên quan hệ •... dung câu lệnh trigger cách sử dụng thủ tục sp_helptext • Hiển thị nội dung trigger tgr_test: Sp_helptext tgr_test 29 Hệ quản trị Cơ sở liệu 30 31

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

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN