Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
138 KB
Nội dung
TRIGGER Sau học này, sinh viên có thể: Hiểu trigger gì, cơng dụng Tạo trigger Xoá trigger Thay đổi trigger GV Phạm Thị Lan Anh Nội dung học Giới thiệu Triggers Định nghĩa Triggers Triggers làm việc Các ví dụ Triggers Các lưu ý GV Phạm Thị Lan Anh Trigger Trigger stored procedure đặc biệt gọi tự động user cập nhật liệu table Được kết hợp với table: Được định nghĩa table cụ thể Được gọi tự động: Khi có thao tác cập chật liệu table (insert, update, delete) trigger thao tác tương ứng tự động thực Khác với procedure, trigger gọi trực tiếp, không nhận tham số Là phần transaction: lệnh trigger xem single transaction, roll back từ chổ trigger GV Phạm Thị Lan Anh Sử dụng trigger để làm gì? Để thực cascade updates cascade deletes qua table quan hệ database Ép buộc tính tồn vẹn liệu phức tạp : Thực ràng buộc có tham chiếu đến column nhiều table Định nghĩa Custom Error Messages: Dùng trigger để trả chuỗi thơng báo trạng thái hàng động Bảo trì liệu khơng chuẩn hố: ! GV Phạm Thị Lan Anh Triggers hoạt động nào? Triggers thực tự động sau lệnh INSERT, UPDATE, DELETE thực table mà trigger định nghĩa Còn constraints INSTEAD OF trigger kiểm tra trước lệnh INSERT, UPDATE, DELETE thực Constraints kiểm tra trước trigger Một table có nhiều Triggers cho action Một trigger định nghĩa cho nhiều action Khi có nhiều trigger table, table owner dùng procedure hệ thống sp_settriggerorder để định trigger đầu trigger cuối để thực thi Thứ tự trigger cịn lại khơng thể xếp User phải có quyền để thực tất lệnh mà định nghĩa Triggers Table Owners tạo Triggers Views Temporary Tables tham chiếu đến view temporary GV Phạm Thị Lan Anh Triggers hoạt động Triggers không trả kết Triggers điều khiển multi-row actions: hành động INSERT, UPDATE, DELETE gọi trigger ảnh hưởng lên nhiều dịng liệu, Ta chọn: Xử lý tất dòng với trường hợp dòng ảnh hưởng phải thoả điều kiện trigger Xử lý dòng thỏa điều kiện GV Phạm Thị Lan Anh Logic tables Khi có action Insert, table logic inserted sinh ra, có cấu trúc giống với cấu trúc table insert, có liệu record insert Khi co action delete, table deleted sinh ra, có cấu trúc giống với cấu trúc table bị deleted, có liệu record bị xố Khi có action update, có table inserted deleted GV Phạm Thị Lan Anh Tạo trigger CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { {{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE] } [ WITH APPEND ] AS } } [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ] [ n ] }] sql_statement [ n ] GV Phạm Thị Lan Anh Tham số (1) Table | view : tên view/table mà tigger thực có action tương ứng WITH ENCRYPTION: mã hoá nột dung text lệnh create trigger table syscomments AFTER: Trigger gọi tất hành động thực xong Các kiển tra constrain cascade kiểm tra hoàn thành trước trigger thực Default AFTER có từ khố FOR định AFTER trigger định nghĩa view INSTEAD OF: định trigger đựoc thực thay cho action trigger INSTEAD OF triggers không cho phép cập nhật liệu view có WITH CHECK OPTION GV Phạm Thị Lan Anh Tham số (2) { [DELETE] [,] [INSERT] [,] [UPDATE] } : định action gắn với trigger Đối với INSTEAD OF triggers, action DELETE khơng cho phép table mà có relationship mà định CASCADE ON DELETE Tương tự, action UPDATE không cho phép table có relationships mà CASCADE ON UPDATE Table deleted inserted logical tables Chúng có cấu trúc giống với table mà trigger định nghĩa, chứa dịng giá trị cũ mà thay đổi action user Ta có truy xuất liệu table định nghĩa trigger GV Phạm Thị Lan Anh 10 Tham số (3) Các giá trị kiểu text, ntext, image table inserted deleted không truy xuất Khi trigger mức 65, giá trị null trả cột có kiểu text, ntext, image table inserted deleted cột cho phép null; chuỗi zero-length trả cột null IF UPDATE (column): kiểm tra action update cột định, khôgn dùng cho action delete With Append: Chèn thêm trigger vào trigger có trước GV Phạm Thị Lan Anh 11 Ví dụ Use Northwind GO CREATE TRIGGER Empl_Delete ON Employees FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > BEGIN RAISERROR( 'You cannot delete more than one employee at a time.', 16, 1) ROLLBACK TRANSACTION END GV Phạm Thị Lan Anh 12 Những lệnh sau không dùng định nghĩa trigger GV Phạm Thị Lan Anh 13 Ví dụ (1) USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'reminder' AND type = 'TR') DROP TRIGGER reminder GO CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE AS RAISERROR (50009, 16, 10) GO GV Phạm Thị Lan Anh 14 Alter trigger ALTER TRIGGER trigger_name ON table [WITH ENCRYPTION] {{FOR {[,] [DELETE] [,] [UPDATE] [,][INSERT]} AS sql_statement [ n] } | {FOR {[,] [INSERT] [,] [UPDATE]} AS IF UPDATE (column) [{AND | OR} UPDATE (column) [, n]] sql_statement [ n] } } GV Phạm Thị Lan Anh 15 Xoá trigger DROP TRIGGER trigger_name GV Phạm Thị Lan Anh 16 Bài tập áp dụng (QLVT) Tạo trigger để insert record vào table CHITIETHOADON, cập nhật lại SLTON vật tư table VATTU Tạo trigger để khơng cho phép hố đơn có nhiều chi tiết hố đơn Tạo trigger khơng cho phép hai vật tư trùng tên Tạo trigger để không cho phép xoá lúc nhiều khách hàng GV Phạm Thị Lan Anh 17 Tạo trigger để khơng cho phép xố vật tư mà có chi tiết hoá đơn vật tư Tạo trigger để kiểm tra số lượng bán vật tư phải nhỏ số lượng tồn kho GV Phạm Thị Lan Anh 18 create trigger t1 on chitiethoadon1 for insert as declare @sl int, @mavt varchar(10) select @sl = sl, @mavt = mavt from inserted update vattu1 set slt=slt- @sl where mavt =@mavt GV Phạm Thị Lan Anh 19 Lich kiem tra Thu hai, 1/5/06 nghi le Thu hai, 8/5/06, hoc bu Thu hai, 15/5/06 kiem tra thuc hanh mon HQTCSDL: Tu 13:00: nhom Tu 14:30: nhom + GV Phạm Thị Lan Anh 20 ...Nội dung học Giới thiệu Triggers Định nghĩa Triggers Triggers làm việc Các ví dụ Triggers Các lưu ý GV Phạm Thị Lan Anh Trigger Trigger stored procedure đặc biệt gọi tự... table mà trigger định nghĩa Cịn constraints INSTEAD OF trigger kiểm tra trước lệnh INSERT, UPDATE, DELETE thực Constraints kiểm tra trước trigger Một table có nhiều Triggers cho action Một trigger. .. nghĩa cho nhiều action Khi có nhiều trigger table, table owner dùng procedure hệ thống sp_settriggerorder để định trigger đầu trigger cuối để thực thi Thứ tự trigger lại khơng thể xếp User phải