1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 7 trigger SQL server 2005

22 300 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 286,5 KB

Nội dung

Ý nghĩa: Bảo đảm toàn vẹn dữ liệu theo quy tắc xác định, được quản lý theo bảng dữ liệu hoặc khung nhìn. Sử dụng DML trigger một cách hợp lý trong CSDL sẽ có tác động rất lớn trong việc tăng hiệu năng của CSDL.

Chương TRIGGER 7.1 DML Trigger 7.1.1 Giới thiệu DML Trigger 7.1.2 Tạo DML Trigger 7.2 DDL Trigger 7.2.1 Giới thiệu DDL Trigger 7.2.2 Tạo DDL Trigger 7.2.3 Hàm Eventdata SQL Server 2005 7.1 DML Trigger 7.1.1 Giới thiệu DML (Data Manipulation Language) Trigger  Dùng để kiểm soát liệu thay đổi  trigger loại phải gắn liền với bảng CSDL  Khi liệu bảng bị thay đổi (INSERT, UPDATE hay DELETE) trigger tự đông kích hoạt  DML Trigger sử dụng việc bảo đảm toàn vẹn liệu theo quy tắc xác định, quản lý theo bảng liệu khung nhìn Sử dụng DML trigger cách hợp lý CSDL có tác động lớn việc tăng hiệu CSDL SQL Server 2005 7.1 DML Trigger 7.1.1 Giới thiệu DML Trigger • Ý nghĩa: - - Bảo đảm toàn vẹn liệu theo quy tắc xác định, quản lý theo bảng liệu khung nhìn Sử dụng DML trigger cách hợp lý CSDL có tác động lớn việc tăng hiệu CSDL SQL Server 2005 7.1.1 Giới thiệu DML Trigger Thực hữu dụng với khả năng: • Nhận biết, ngăn chặn huỷ bỏ thao tác làm thay đổi trái phép liệu CSDL • Các thao tác trigger phát loạt đảm bảo tính • Thông qua DML trigger, bạn tạo kiểm tra mối quan hệ phức tạp bảng CSDL mà thân ràng buộc thực liệu tự động thực thao tác khác CSDL nhằm hợp lệ liệu SQL Server 2005 7.1.2 Tạo DML Trigger Tạo Trigger theo cấu trúc sau: CREATE TRIGGER tên_trigger ON tên_bảng FOR {[INSERT][,][UPDATE][,][DELETE]} AS [IF UPDATE(tên_cột) [AND UPDATE(tên_cột)|OR UPDATE(tên_cột)] ] các_câu_lệnh_của_trigger SQL Server 2005 7.1.2.1 Tạo Trigger cho hành động thêm ghi •SQL Server định nghĩa hai bảng logic INSERTED DELETED để sử dụng trigger •Cấu trúc hai bảng tương tự cấu trúc bảng mà trigger tác động •Dữ liệu hai bảng tùy thuộc vào câu lệnh tác động lên bảng làm kích hoạt trigger, cụ thể trường hợp sau: SQL Server 2005 7.1.2.1 Tạo Trigger cho hành động thêm ghi •Khi câu lệnh DELETE thực thi bảng, dòng liệu bị xoá chép vào bảng DELETED Bảng INSERTED trường hợp liệu •Dữ liệu bảng INSERTED dòng liệu chèn vào bảng gây nên kích hoạt trigger câu lệnh INSERT Bảng DELETED trường hợp liệu •Khi câu lệnh UPDATE thực thi bảng, dòng liệu cũ chịu tác động câu lệnh chép vào bảng DELETED, bảng INSERTED dòng sau cập nhật SQL Server 2005 7.1.2.1 Tạo Trigger cho hành động thêm ghi Ví dụ: Tạo Trigger thực công việc, người dùng nhập ghi vào bảng LOP, Nếu cột liệu hedaotao rỗng hệ thống tự động gán giá trị cột giá trị ‘Chính quy’ SQL Server 2005 7.1.2.1 Tạo Trigger cho hành động thêm ghi CREATE TRIGGER trg_insert_tblLOP ON LOP AFTER INSERT AS BEGIN DECLARE @hedaotao nvarchar(25) DECLARE @malop nvarchar(10) SELECT @hedaotao=hedaotao, @malop= malop FROM INSERTED IF @hedaotao='' or @hedaotao is null UPDATE LOP SET hedaotao='Chính quy' Where malop=@malop END SQL Server 2005 7.1.2 Tạo DML Trigger •7.1.2.2 Tạo Trigger cho hành động cập nhật ghi: Ví dụ: Tạo Trigger thực công việc, người dùng cập nhật điểm lần cho ghi bảng DIEMTHI, Nếu sau cập nhật cột liệu điểm lần có giá trị >=5 thì hệ thống tự động xóa dòng điểm thi lần sinh viên thi học phần SQL Server 2005 10 7.1.2 Tạo DML Trigger CREATE TRIGGER Trg_Update_diemlan1 ON DIEMTHI AFTER UPDATE AS BEGIN DECLARE @diemlan1 numeric(5,2) DECLARE @masv nvarchar(10) DECLARE @mahocphan nvarchar(10) SELECT @masv=masv, @mahocphan=mahocphan, @diemlan1=diem FROM INSERTED WHERE lanthi=1 IF @diemlan1>=5 DELETE FROM DIEMTHI WHERE masv=@masv and mahocphan=@mahocphan and lanthi=2 END SQL Server 2005 11 7.1.2.3 Tạo Trigger cho hành động xóa ghi Ví dụ: Tạo Trigger thực lưu mẫu tin bị xóa từ bảng DIEMTHI vào bảng DELECTED_DIEMTHI) CREATE TRIGGER Trg_Delete_DIEMTHI ON DIEMTHI AFTER DELETE AS BEGIN INSERT INTO DELETED_DIEMTHI SELECT * FROM DELETED END SQL Server 2005 12 7.1.2.4 Sử dụng mệnh đề IF UPDATE Sử dụng mệnh đề IF UPDATE trigger muốn trigger kích hoạt việc thay đổi liệu liên quan đến số cột định bảng •IF UPDATE không sử dụng câu lệnh DELETE SQL Server 2005 13 7.1.2.4 Sử dụng mệnh đề IF UPDATE dụ 7.4: Ví •CREATE TRIGGER trg_nhatkybanhang_update_soluong ON nhatkybanhang FOR UPDATE AS IF UPDATE(soluong) UPDATE mathang SET mathang.soluong = mathang.soluong – (inserted.soluong-deleted.soluong) FROM (deleted INNER JOIN inserted ON deleted.stt = inserted.stt) INNER JOIN mathang ON mathang.mahang = deleted.mahang SQL Server 2005 14 7.1.2.5 Lệnh ROLLBACK TRANSACTION Một trigger có khả nhận biết thay đổi mặt liệu bảng liệu, từ phát huỷ bỏ thao tác không đảm bảo tính toàn vẹn liệu •Trong trigger, để huỷ bỏ tác dụng câu lệnh làm kích hoạt trigger, bạn sử dụng câu lệnh: •ROLLBACK TRANSACTION SQL Server 2005 15 7.1.2.5 Lệnh ROLLBACK TRANSACTION Ví dụ 7.7: Ví dụ: Tạo Trigger để đảm bảo ràng buộc số học phần thi lại sinh viên không vượt SQL Server 2005 16 7.2 DDL Trigger 7.2.1 Giới thiệu DDL Trigger •DDL (Data Definition Language) Trigger kích hoạt người sử dụng làm thay đổi cấu trúc CSDL hay đối tượng CSDL phát biểu SQL thuộc DDL như: Create, Alter, Drop, Grant, Deny, Revoke,… •Nếu DML Trigger dùng để kiểm soát liệu chứa Table hay View DDL Trigger sử dụng cho chức quản trị CSDL Đây loại Trigger xuất SQL Server 2005 SQL Server 2005 17 7.2 DDL Trigger 7.2.1 Giới thiệu DDL Trigger •Sau giai đoạn thiết kế CSDL hoàn tất, để kiểm soát thay đổi cấu trúc CSDL, cần sử dụng loại Trigger •Như vậy, mục đích DDL Trigger ngăn ngừa thay đổi cấu trúc CSDL Ngoài ra, bạn ghi lại hành động làm thay đổi cấu trúc CSDL sử dụng DDL Trigger SQL Server 2005 18 7.2 DDL Trigger 7.2.1 Giới thiệu DDL Trigger •Mục đích DDL Trigger kiểm soát thay đổi cấu trúc CSDL •Có thể ghi lại hành động làm thay đổi cấu trúc CSDL SQL Server 2005 19 7.2 DDL Trigger 7.2.2 Tạo DDL Trigger Tạo DDL Trigger theo cấu trúc sau: CREATE TRIGGER tên_trigger ON DATABASE|ALL SERVER FOR {[ Các kiện DDL] [nhóm kiện]} AS các_câu_lệnh_của_trigger SQL Server 2005 20 7.2 DDL Trigger 7.2.2 Tạo DDL Trigger Ví dụ 7.8: Ví dụ: Tạo Trigger không cho tạo Database SQL Server 2005 21 7.2 DDL Trigger 7.2.3 Hàm Eventdata •Thông tin kiện làm kích hoạt DDL trigger lưu lại trong hàm Eventdata Hàm trả giá trị kiểu xml Lược đồ xml bao gồm thông tin sau: •Thời gian kiện •Định danh xử lý hệ thống (The System Process ID: SPID) kết nối lúc trigger thực thực •Kiểu kiện kích hoạt trigger •Tùy thuộc vào kiểu kiện, lược đồ bao gồm thêm thông tin như: database nơi kiện xuất hiện, đối tượng bị tác động kiện xuất câu lệnh T-SQL kiện SQL Server 2005 22 ... DML Trigger dùng để kiểm soát liệu chứa Table hay View DDL Trigger sử dụng cho chức quản trị CSDL Đây loại Trigger xuất SQL Server 2005 SQL Server 2005 17 7.2 DDL Trigger 7. 2.1 Giới thiệu DDL Trigger. .. CREATE TRIGGER tên _trigger ON DATABASE|ALL SERVER FOR {[ Các kiện DDL] [nhóm kiện]} AS các_câu_lệnh_của _trigger SQL Server 2005 20 7. 2 DDL Trigger 7. 2.2 Tạo DDL Trigger Ví dụ 7. 8: Ví dụ: Tạo Trigger. .. thiệu DDL Trigger •Mục đích DDL Trigger kiểm soát thay đổi cấu trúc CSDL •Có thể ghi lại hành động làm thay đổi cấu trúc CSDL SQL Server 2005 19 7. 2 DDL Trigger 7. 2.2 Tạo DDL Trigger Tạo DDL Trigger

Ngày đăng: 23/06/2017, 16:26

TỪ KHÓA LIÊN QUAN