Danh mục

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

Số trang: 8      Loại file: pdf      Dung lượng: 1.06 MB      Lượt xem: 11      Lượt tải: 0    
Thư viện của tui

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

Thông tin tài liệu:

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!
Nội dung trích xuất từ tài liệu:
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 6 - Lê Thị Minh Nguyện8/25/2017Nội dung1. Khái niệm.Chương 6.Bẫy lỗi (Trigger)2. Công dụng trigger3. Các dạng ràng buộc toàn vẹn4. Ràng buộc dữ liệu toàn vẹn với triggerGV: Lê Thị Minh NguyệnEmail: nguyenltm@huflit.edu.vn5. Cơ chế hoạt động của triggerHệ quản trị Cơ sở dữ liệu1. Khái niệm2. Công dụng trigger• Trigger là một dạng đặc biệt của thủ tục lưu trữ và thực thi• Đảm bảo tính toàn vẹn trong CSDLtự động khi người dùng áp dụng câu lệnh cập nhật dữ liệulên một table chỉ định nhằm mục đích đảm bảo tính toàn2• Kiểm soát dữ liệu hiện có trong CSDL khi thay đổi giá trịcủa một mẩu tin trong bảngvẹn dữ liệu. Nếu trigger bị vi phạm, câu lệnh sẽ không• Kiểm tra dữ liệu nhập có thỏa điều kiện khôngđược thực thi• Kiểm chứng khi xóa mẩu tin trong bảng• Tự động cập dữ liệu trong bảng B khi bảng A thay đổi3418/25/20173. Các dạng ràng buộc toàn vẹn4. Ràng buộc dữ liệu toàn vẹn với trigger???Hệ quản trị Cơ sở dữ liệu4.1. Thêm mới mẩu tin4.2. Xóa mẩu tin4.3. Sửa mẩu tin564.1. Thêm mới mẩu tin4.2. Xóa mẩu tin• Kiểm tra ràng buộc dữ liệu• Phụ thuộc khóa ngoại• Khoá ngoại• Liên bộ liên quan hệ• Miền giá trị• Liên bộ trên một quan hệ• Liên thuộc tính trong cùng một quan hệ• Liên thuộc tính của nhiều quan hệ7Hệ quản trị Cơ sở dữ liệu828/25/20174.3. Sửa mẩu tin5. Cơ chế hoạt động của trigger• 3 biến cố kích hoạt 1 trigger• Khoá ngoại• INSERT• UPDATE• DELETE• Miền giá trị• Trigger lưu trữ dữ liệu của mẩu tin vừa thêm vào một table mới có tên làINSERTED• Liên bộ trên một quan hệ• Trigger lưu trữ dữ liệu của mẩu tin vừa xoá vào một table có tên là DELETED.• Liên thuộc tính trong một quan hệ• Trigger lưu trữ dữ liệu của mẩu tin vừa cập nhật là sự phối hợp của 2 tableDELELTED và INSERTED• Liên thuộc tính của nhiều quan hệ95. Cơ chế hoạt động của trigger (tt)5. Cơ chế hoạt động của trigger (tt)• Cú pháp:Có thể thay bằngFOR. After là mặcđịnh10CREATE TRIGGER Them_HHON HANG_HOAAFTERINSERTASSelect * From InsertedCREATE TRIGGER Tên_triggerON tên_table| tên_viewAFTER | INSTEAD OF biến_cố_kích_hoạt_triggerAS-- Các câu lệnh T-SQL• Thêm dữ liệuINSERTHANG_HOA(MaHH, TenHH)VALUES(‘TV01’, ‘Tivi Sony’)111238/25/20175. Cơ chế hoạt động của trigger (tt)5. Cơ chế hoạt động của trigger (tt)CREATE TRIGGER SUA_HHON HANG_HOAAFTERUPDATEASSelect * From InsertedSelect * From DeletedCREATE TRIGGER Xoa_HHON HANG_HOAAFTERDELETEASSelect * From InsertedSelect * From Deleted• Cập nhật dữ liệuUPDATE HANG_HOASETTen_HH = ‘Man Hinh Sony’WHEREMaHH = ‘TV01’• Xóa dữ liệuDELETE HANG_HOAWHEREMaHH = ‘TV01’13Ví dụ 114Ví dụ 1 (tt)• HOADON_DH(MaHD, NgayDH, MaKH)• PHIEU_XUAT(MaPX, NgayXuat, #MaHD )• CHITIET_DH(MAHD, MaHH, SoLuong, DonGia)• Xây dựng trigger trong bảng PHIEU_XUAT để kiểm tra các ràng buộctoàn vẹn dữ liệu khi người dùng thêm mới thông tin của một phiếuxuất hàng cho một bảng hoá đơn đặt hàng trước đó. Các ràng buộctoàn vẹn dữ liệu bao gồm.• Khoá ngoại: cần kiểm tra số đặt hàng phải tồn tại trong 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.15CREATE TRIGGER tg_PhieuXuat_InsertONPHIEU_XUATFOR INSERTASDECLARE @NgayHD datetime, @ErrMsg varchar(200)-- Kiểm tra số hoá đơn đã có trong bảng DONDH không?IF NOT EXISTS(Select *From Inserted I, HOADON_DH DWhere I.MaHD= D.MaHD)BeginRollback TranRaiserror(‘Số đơn đặt hàng không tồn tại’, 16,1)ReturnEnd1648/25/2017Ví dụ 1 (tt)Ví dụ 2--Tính ra ngày đặt hàngSelect@NgayDH=NgayDHFromHoaDon_DH D, Inserted IWhereD.MaHD = I.MaHD-- Kiểm tra ngày giao hàng phải sau ngày đặt hàngIF @NgayDH < (Select ngayxuat From Inserted)BeginSet @ErrMsg = ‘ngày giao hàng phải ở sau ngày:’+ Convert(char(10), ngayDH, 103 )Raierror(@ErrMsg,16,1)Rollback tranEnd• Kiểm tra ràng buộc• Kiểm tra ràng buộc khóa ngoại• Ví dụ: khi xoá một số hoá đơn đặt hàng trong bảng HOADON_DH cầnphải kiểm tra các RBTV dữ liệu sau:• Kiểm tra xem đơn đặt hàng bị xoá đã được xuất hàng chưa? Nếu đã được xuấtrồi thì thông báo không thể xoá đơn đặt hàng được.• Ngược lại thì xoá dữ liệu liên quan bên bảng chi tiết đơn đặt hàng(CHITIET_HD)17Ví dụ 2 (tt)CREATETRIGGERtg_HOADON_DeleteONHOADON_DHFORDELETEASDECLARE @SoPX char(5), @ErrMsg char(200), @Delete_Err int-- Kiểm tra xem đơn hàng đã được xuất chưaIF EXISTS(Select MaPXFrom PHIEU_XUATWhere MaHD IN(Select MaHD From Deleted))BeginSelect @MaPX = MaPX From PHIEU_XUATWhere MaHD In(Select MaHD From Deleted)Set @ErrMsg = ‘Đơn đặt hàng đã được nhập theo ’+‘số xuất hàng ’+ @SoPX + char(13) + ‘.Không thể huỷ được’RaiseError(@ErrMsg,16,1)Rollback tranEnd18Ví dụ 2 (tt)ElseBegin-- Xoá tự động chi tiết các đơn đặt hàng liên quanDelete FROM CHITIET_DHWhere MaHD In(Select MaHD From DELETED)Set @Delete_Err = @@ERRORIF @Delete_Err ...

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