Bài giảng cơ sở dữ liệu chương 5 ths lương thị ngọc khánh

62 313 0
Bài giảng cơ sở dữ liệu  chương 5   ths  lương thị ngọc khánh

Đ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 5: LẬP TRÌNH VỚI TRANSACTSQL THỦ TỤC LƯU TRỮ (STORE PROCEDURE) BIẾN CỤC BỘ Biến đối tượng chứa liệu  Dữ liệu đưa vào câu lệnh SQL dùng cục  Tên biến cục phải bắt đầu @  Từ khóa SET hay SELECT dùng để gán giá trị cho biến cục ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  BIẾN CỤC BỘ (TT) DECLARE @Tên_biến Kiểu_dữ_liệu [, ]  Kiểu liệu text, ntext image khơng chấp nhận khai báo biến  Ví dụ: Để khai báo biến lưu trữ giá trị tổng số lượng đặt hàng, họ tên nhà cung cấp, ngày xuất hàng Sử dụng lệnh DECLARE sau: ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  DECLARE @Tongsldat INT, @Hotenncc CHAR(50) DECLARE @Ngayxh DATETIME BIẾN CỤC BỘ (TT) – GÁN GIÁ TRỊ CHO BIẾN Từ khóa SET hay SELECT dùng để gán giá trị cho biến  Cú pháp: SET @ = Hoặc là: SELECT @ =  Chú ý: Phạm vi hoạt động biến nằm thủ tục lơ có chứa lệnh khai báo biến ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  BIẾN CỤC BỘ (TT) – GÁN GIÁ TRỊ CHO BIẾN Ví dụ:  ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Để tính số lượng đặt hàng cao mặt hàng “Đầu DVD Hitachi đĩa” có mã vật tư “DD01” Sử dụng lệnh SELECT sau: DECLARE @MaxSldat INT SELECT @MaxSldat=MAX(SLDAT) FROM CTDONDH  WHERE MAVTU=‘DD01’ BIẾN CỤC BỘ (TT) – XEM GIÁ TRỊ HIỆN HÀNH CỦA BIẾN PRINT @Tên_biến | Biểu_thức_chuỗi  Để tính đồng thời giá trị số lượng đặt hàng thấp cao nhất, hiển thị kết hình Ta sử dụng lệnh SELECT PRINT :          ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  DECLARE @MinSldat INT, @MaxSldat INT SELECT@MinSldat=MIN(SLDAT), @MaXSldat=MAX(SLDAT) FROM CTDONDH PRINT "Số lượng thấp : " PRINT @MinSldat PRINT "Số lượng cao : " + CONVERT(VARCHAR(10), @MaxSldat) THỦ TỤC LƯU TRỮ Tập hợp biên dịch câu lệnh T-SQL lưu trữ với tên xác định  Sử dụng để thực nhiệm vụ quản trị, áp dụng luật giao dịch phức tạp  Có hai loại thủ tục lưu trữ:   ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Thủ tục lưu trữ hệ thống đề cập đến phương pháp quản trị liệu cập nhật thông tin vào bảng (thường bắt đầu sp_) Thủ tục lưu trữ người dùng định nghĩa THỦ TỤC LƯU TRỮ - LỢI ÍCH Tăng tốc độ thực hiện:   Thực thi server, biên dịch lần Tốc độ truy nhập liệu nhanh hơn:   ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  SQl lựa chọn cách tốt để xử lý lệnh SQL truy suất csdl chúng biên dịch Modular programming:  Một thủ tục phân thành thủ tục nhỏ hơn, thủ tục dùng chung thủ tục khác->giảm thời gian thiết kế thực thi thủ tục đồng thời dễ quản lý gỡ rối Sự quán  Cải thiện bảo mật:   Nâng cao an tồn bảo mật Có thể quyền thực thi cho thủ tục thực tác vụ người dùng TẠO THỦ TỤC LƯU TRỮ BẰNG SQL SERVER MANAGEMENT ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng 10 CÁC LOạI TRIGGER  Có loại trigger:  Trigger thông thường: AFTER (FOR) trigger Chạy sau hành động kiểm tra liệu Rule Constraint  Dữ liệu bị tạm thời thay đổi bảng   INSTEAD OF trigger Chạy trước hành động kiểm tra liệu  Dữ liệu chưa bị thay đổi  Có thể thay hành động cập nhật liệu hành động khác  48 CÁC BẢNG TRUNG GIAN INSERTED VÀ DELETED Inserted ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Chứa liệu thêm hành động INSERT/UPDATE  Có hai loại trigger  Cấu trúc bảng giống với bảng thực cập nhật liệu   Deleted Chứa liệu bị xố hành động DELETE/UPDATE  Có hai loại trigger  Cấu trúc bảng giống với bảng thực cập nhật liệu   Hành động update SQL Server Xố dịng liệu cũ  Thêm vào dịng liệu với thơng tin cập nhật  49 LÀM VIỆC VỚI TRIGGER 50 TẠO MỚI TRIGGER Trigger tạo câu lệnh SQL Server Management Studio  Trong hai trường hợp, câu lệnh CREATE TRIGGER sử dụng để tạo trigger CREATE ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  TRIGGER Tên_Trigger ON Tên_bảng { [ INSTEAD OF ] | [ FOR | AFTER ] } { [ INSERT [, UPDATE [,DELETE ] ] ] } AS [DECLARE Biến_cục_bộ] Các_lệnh 51 MÔ TẢ Tên bảng   Mỗi bảng có quyền tạo instead of trigger cho hành động cập nhật FOR AFTER   Tên bảng mà trigger tạo liên kết INSTEAD OF: định trigger loại instead of trigger   ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Nếu tạo trigger thông thường INSERT, UPDATE, DELETE  Hành động cập nhật liệu tác động vào bảng để kích hoạt trigger 52 XĨA TRIGGER ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng Cú pháp  Tên_trigger DROP TRIGGER 53 SỬA NỘI DUNG TRIGGER Sửa nội dung ALTER ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  TRIGGER Tên_Trigger ON Tên_bảng FOR INSERT [, UPDATE [,DELETE ]] AS [DECLARE Biến_cục_bộ] Các_lệnh 54 TRIGGER LỒNG NHAU Trigger lồng ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Hành động cập nhật  Trigger  Cập nhật bảng khác  Trigger bảng tương ứng  Instead Of trigger không phát sinh lại bảng mà liên kết    Cập nhật  Instead of Trigger  Gọi câu lệnh cập nhật xuống bảng  Instead of trigger Số cấp lồng tối đa 32 cấp  Sử dụng biến @@NestedLevel   Cấu hình cho phép trigger lồng  EXEC sp_configure 'nested triggers', [0 | 1] 55 TRIGGER - KIỂM TRA RÀNG BUỘC DỮ LIỆU 56 KHI THÊM MỚI MẪU TIN Thường dùng để kiểm tra ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Khóa ngoại, Miền giá trị, Liên thuộc tính bảng  Liên thuộc tính nhiều bảng khác   loại đầu tiên, dùng trigger muốn cung cấp báo lỗi cụ thể tiếng Việt   Nếu khai báo ràng buộc constraint Các cấu trúc lệnh thường dùng kiểm tra If Else  If Exists  Raiserror  Rollback Tran  57 KHI HỦY BỎ MẪU TIN Tương tự, kiểm tra ràng buộc trigger INSERT  Nên kiểm tra ràng buộc khoá ngoại ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Thông thường ràng buộc dẫn đến việc phải cập nhật số liệu bảng khác  Chú ý: SQL Server 2000 có thuộc tính CASCADE DELETE  58 KHI SỬA ĐỔI MẪU TIN Tương tự, kiểm tra ràng buộc trigger INSERT   ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tơn Đức Thắng  Ràng buộc khố ngoại sử dụng CASCADE UPDATE để thực tự động Xác định cột cập nhật If Update(Tên_cột) Xử lý 59 TRIGGER CẬP NHẬT GIÁ TRỊ TỰ ĐỘNG Sau kiểm tra ràng buộc trigger ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Rollback liệu không hợp lệ  Thực tiếp hành động cập nhật bảng khác để đảm bảo toàn vẹn liệu: Cập nhật giá trị tự động  Vd: Insert  CTGiaoHang  Cập nhật bảng TONKHO   Các hành động cập nhật thường thực Hủy bỏ liệu quan hệ khố ngoại  Tính lại cột 'tính tốn' bảng liên quan   Vị trí thực Trong trigger kiểm tra ràng buộc định nghĩa  Sau kiểm tra liệu hợp lệ (thoả mãn ràng buộc)  60 INSTEAD OF TRIGGER Bảng ảo thơng thường cập nhật có nhiều giới hạn ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Group By, Order By, Distinct  Ràng buộc khoá ngoại  Thiếu cột NOT NULL bảng   Trigger Instead of Xảy trước SQL Server kiểm tra ràng buộc  Thay đổi hành động cập nhật vào bảng ảo hành động thích hợp bảng gốc  61 VÍ DỤ  ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng Tạo bảng ảo sau Select D.SoDH, NgayDH, MaNhaCC, V.MaVTu, TenVTu, SoLuong, DonGia From CTDONDH CT, DONDH D, VATTU V Where CT.SoDH = D.SoDH And CT.MaVTu = V.MaVTu CREATE TRIGGER tg_vw_CTDONDH_BI INSTEAD OF INSERT ON vw_CTDONDH AS Nếu chưa có đơn đặt hàng, thêm đơn đặt hàng vào DONDH Insert Into DONDH Select SoDH, NgayDH, MaNhaCC From Inserted Where SoDH Not In (Select SoDH From DonDH) Nếu chưa có vật tư, thêm vật tư vào bảng VATTU Insert Into VATTU(MaVTu, TenVTu) Select MaVTu, TenVTu From Inserted Where MaVTu Not In (Select MaVTu From VATTU) Thêm chi tiết đặt hàng vào CTDONDH Insert Into CTDONDH Select SoDH, MaVTu, SoLuong, DonGia From Inserted 62 ... thao tác sở liệu ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  Bổ sung thêm môn học sở liệu có mã CST0 05 số đơn vị học trình vào bảng MONHOC  Lên danh sách nhập điểm thi môn sở liệu cho... BẰNG SQL SERVER MANAGEMENT ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng 10 TẠO THỦ TỤC LƯU TRỮ BẰNG SQL SERVER MANAGEMENT (TT) Tên thủ tục 11 ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức... tục lơ có chứa lệnh khai báo biến ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tôn Đức Thắng  BIẾN CỤC BỘ (TT) – GÁN GIÁ TRỊ CHO BIẾN Ví dụ:  ThS Lương Thị Ngọc Khánh – K CNTT – ĐH Tơn Đức Thắng

Ngày đăng: 03/12/2015, 01:03

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan