Trigger
lượt xem 45
download
Tham khảo tài liệu 'trigger', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Trigger
- TRIGGER Sau bài học này, sinh viên có thể: Hiểu được trigger là gì, công dụng của nó Tạo trigger. Xoá trigger Thay đổi trigger GV Phạm Thị Lan Anh 1
- Nội dung bài học Giới thiệu Triggers 1. Định nghĩa Triggers 2. Triggers làm việc như thế nào 3. Các ví dụ Triggers 4. Các lưu ý 5. GV Phạm Thị Lan Anh 2
- Trigger là gì Trigger là một stored procedure đặc biệt được gọi tự động khi user cập nhật dữ liệu trên một table Được kết hợp với table: Được định nghĩa trên một table cụ thể . Được gọi tự động: Khi có một thao tác cập chật dữ liệu trên table (insert, update, hoặc delete) thì trigger của thao tác tương ứng được tự động thực hiện. Khác với procedure, trigger không thể được gọi trực tiếp, không nhận tham số Là một phần của transaction: những lệnh trong trigger được xem là một single transaction, có thể được roll back từ bất kỳ chổ nào trong trigger GV Phạm Thị Lan Anh 3
- Sử dụng trigger để làm gì? Để thực hiện cascade updates và cascade deletes qua các table quan hệ trong database Ép buộc tính toàn vẹn dữ liệu phức tạp : Thực hiện các ràng buộc có tham chiếu đến các column trong nhiều table. Định nghĩa Custom Error Messages: Dùng trigger để trả về các chuỗi thông báo trạng thái của một hàng động nào đó. Bảo trì các dữ liệu không được chuẩn hoá: ! GV Phạm Thị Lan Anh 4
- Triggers hoạt động như thế nào? Triggers được thực hiện tự động sau khi lệnh INSERT, UPDATE, hoặc DELETE được thực hiện trên một table mà trigger đó được định nghĩa. Còn các constraints và INSTEAD OF trigger sẽ được kiểm tra trước khi lệnh INSERT, UPDATE, hoặc DELETE thực hiện. Constraints sẽ được kiểm tra trước trigger. Một table có thể có nhiều Triggers cho một action. Một trigger có thể được định nghĩa cho nhiều action. Khi có nhiều trigger trong một table, thì table owner có thể dùng procedure hệ thống sp_settriggerorder để chỉ định trigger đầu và trigger cuối để thực thi. Thứ tự của các trigger còn lại không thể sắp xếp được. User phải có quyền để thực hiện tất cả các lệnh mà được định nghĩa trong Triggers Table Owners không thể tạo ra các Triggers trên Views hoặc Temporary Tables nhưng có thể tham chiếu đến view và temporary. GV Phạm Thị Lan Anh 5
- Triggers hoạt động như thế nào Triggers không trả kết quả về. Triggers có thể điều khiển multirow actions: một hành động INSERT, UPDATE, hoặc DELETE gọi một trigger có thể ảnh hưởng lên nhiều dòng dữ liệu, Ta có thể chọn: Xử lý tất cả các dòng cùng với nhau trong trường hợp các dòng ảnh hưởng phải thoả điều kiện của trigger. Xử lý từng dòng thỏa điều kiện. GV Phạm Thị Lan Anh 6
- 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 được insert, có dữ liệu là record đang được 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ó dữ liệu là record đang bị xoá Khi có action update, có 2 table inserted và deleted GV Phạm Thị Lan Anh 7
- 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 8
- Tham số (1) Table | view : tên view/table mà tigger được thực hiện khi có action tương ứng. WITH ENCRYPTION: mã hoá nột dung text của lệnh create trigger trong table syscomments. AFTER: Trigger sẽ được gọi chỉ khi tất cả các hành động đã thực hiện xong. Các kiển tra constrain và cascade sẽ được kiểm tra hoàn thành trước khi trigger thực hiện. Default là AFTER nếu chỉ có từ khoá FOR được chỉ định. AFTER trigger không thể định nghĩa trên view. INSTEAD OF: chỉ định trigger đựoc thực hiện thay cho action của trigger. INSTEAD OF triggers không cho phép cập nhật dữ liệu trên view có WITH CHECK OPTION. GV Phạm Thị Lan Anh 9
- Tham số (2) { [DELETE] [,] [INSERT] [,] [UPDATE] } : chỉ định action gắn với trigger. Đối với INSTEAD OF triggers, action DELETE không cho phép trên table mà có relationship mà chỉ định CASCADE ON DELETE. Tương tự, action UPDATE không cho phép trên table có relationships mà CASCADE ON UPDATE. Table deleted và inserted là logical tables. Chúng có cấu trúc giống với table mà trigger được định nghĩa, chứa các dòng giá trị cũ hoặc mới mà có thể thay đổi bởi action của user. Ta có truy xuất dữ liệu trong 2 table này trong định nghĩa trigger. GV Phạm Thị Lan Anh 10
- Tham số (3) Các giá trị kiểu text, ntext, hoặc image trong table inserted và deleted không truy xuất được. Khi trigger ở mức 65, giá trị null sẽ được trả về cột có kiểu text, ntext, hoặc image trong table inserted hoặc deleted nếu cột cho phép null; chuỗi zero length được trả về nếu cột có thể null. IF UPDATE (column): kiểm tra action update trên cột được chỉ định, khôgn dùng cho action delete. With Append: Chèn thêm trigger này vào các 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) > 1 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 đây không được dùng trong đị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 để khi insert một record vào trong table CHITIETHOADON, thì cập nhật lại SLTON của vật tư đó trong table VATTU Tạo trigger để không cho phép một hoá đơn có nhiều hơn 4 chi tiết hoá đơ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á cùng lúc nhiều hơn một khách hàng GV Phạm Thị Lan Anh 17
- Tạo trigger để không cho phép xoá một vật tư mà đã có ít nhất một chi tiết hoá đơn của vật tư đó. Tạo trigger để kiểm tra số lượng bán ra của một vật tư phải nhỏ hơn số lượng tồn trong 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, ngay 1/5/06 nghi le. Thu hai, ngay 8/5/06, hoc bu Thu hai, ngay 15/5/06 kiem tra thuc hanh mon HQTCSDL: Tu 13:00: nhom 6 Tu 14:30: nhom 4 + 5 GV Phạm Thị Lan Anh 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
HỆ QUẢN TRỊ CSDL SQL SERVER - Chương 8:TRIGGER
18 p | 607 | 169
-
Triggers And Views
6 p | 227 | 146
-
Triggers và Views trong SQL
5 p | 349 | 75
-
Bài giảng Chương III: Procedure, Function, View, Trigger & Index
124 p | 299 | 48
-
Bẫy Lỗi (Triggers)
23 p | 150 | 27
-
Bài giảng Thủ tục lưu trữ - hàm - trigger
59 p | 200 | 24
-
Introducing Triggers
9 p | 133 | 23
-
Bài 7: Triggers and Views
20 p | 98 | 19
-
Bài giảng Hệ quản trị Cơ sở dữ liệu - Bài 11: Triggers
36 p | 94 | 15
-
Tìm hiểu về Trigger
2 p | 129 | 14
-
Triggers trong SQL 2000
9 p | 104 | 12
-
Bài giảng SQL server: Chương 6 - Lê Thị Minh Nguyện
15 p | 105 | 10
-
Bài giảng View, procedure, function & trigger - Lương Trần Hy Hiến
25 p | 71 | 9
-
Sinh tự động trigger trên ngôn ngữ T-SQL hỗ trợ anchor modeling trong SQL server
6 p | 52 | 8
-
Bài giảng SQL server 2005: Chương 8 - Phạm Mạnh Cương
18 p | 61 | 6
-
Bài giảng Microsoft SQL server: Chương 8 - Phạm Mạnh Cương
18 p | 62 | 5
-
Bài giảng Cơ sở dữ liệu - Bài 9: Trigger
5 p | 55 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 9: Trigger
5 p | 12 | 5
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn