1. Trang chủ
  2. » Tất cả

bai 9 Trigger

18 583 6
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Trigger
Trường học Trường Đại Học
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài Giảng
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 98,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

Nội dung bài học

1. Giới thiệu Triggers

2. Định nghĩa Triggers

3. Triggers làm việc như thế nào

4. Các ví dụ Triggers

5. Các lưu ý

Trang 3

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

Trang 4

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á: !

Trang 5

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.

 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.

Trang 6

Triggers hoạt động như thế nào

 Triggers không thể trả kết quả về.

 Triggers có thể điều khiển multi-row 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

Trang 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 ]

}

}

Trang 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

Trang 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

có cấu trúc giống với table mà trigger được định

nghĩa Chúng giữ 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

Trang 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

Trang 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

Trang 12

Những lệnh sau đây không được dùng trong định nghĩa trigger

Trang 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

Trang 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] }

Trang 15

Xoá trigger

Trang 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

Trang 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

Trang 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

Ngày đăng: 12/01/2013, 15:40

Xem thêm

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w