1. Trang chủ
  2. » Thể loại khác

Tài liệu tham khảo - CITD - Bến Tre 5. TRIGGERS

6 124 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 128,43 KB

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

Nội dung

 Cách hoạt động của trigger  Các trường hợp sử dụng trigger  Tạo trigger  Vô hiệu hoá trigger  Kích hoạt trigger cho cột  Trigger và giao tác Trigger là gì?.  Trigger là một dạng

Trang 1

TRẦN THỊ BẠCH HUỆ

NỘI DUNG

 Trigger là gì?

 Cách hoạt động của trigger

 Các trường hợp sử dụng trigger

 Tạo trigger

 Vô hiệu hoá trigger

 Kích hoạt trigger cho cột

 Trigger và giao tác

Trigger là gì?

 Trigger là một dạng đặc biệt của stored procedure, được thực thi tự động khi dữ liệu có sự thay đổi như thêm, sửa, hoặc xoá

 Có thể sử dụng trigger vào các công việc sau:

– Thay đổi dữ liệu của các bảng liên quan khi bảng đang xét

có sự biến đổi dữ liệu – Đảm bảo ràng buộc cho một cột – Không cho phép thay đổi dữ liệu hoặc phụ hồi (roll back) lại các thao tác sửa đổi

Cách hoạt động của trigger

 Trigger được thực thi tự động khi có thao tác thêm, sửa, xoá trên dữ liệu.

 Trigger sử dụng được với khung nhìn.

 Một trigger chỉ được định nghĩa trên 1 bảng nhưng các xử lý trong trigger có thể sử dụng nhiều bảng khác.

 Có thể xử lý quay lui các thao tác đã thực hiện bằng lệnh ROLL TRANSACTION

Trang 2

 Khi thực thi trigger, SQL Server sẽ tạo ra 2 bảng

INSERTED và DELETED Đây là 2 bảng tạm, chứa

trong bộ nhớ chính Các bảng này được dùng để

khôi phục lại phần dữ liệu đã thay đổi (roll back)

 Hai bảng này là cục bộ cho mỗi trigger, có cấu trúc

giống bảng mà trigger định nghĩa trên đó và chỉ tồn

tại trong thời gian trigger đang xử lý

– Inserted: Chứa các dòng mới được insert hoặc update vào

bảng

– Deleted: Chứa các dòng vừa mới bị xoá khỏi bảng

Chú ý: Thao tác Update = delete dòng cũ + insert

dòng mới

Các trường hợp sử dụng trigger

 Có thể sử dụng trigger trong các trường hợp

sau:

– Xử lý các ràng buộc toàn vẹn dữ liệu

– Kiểm soát dữ liệu khi có sự thay đổi giá trị trong

bảng

– Xử lý dữ liệu trên nhiều dòng

– Tạo thông báo lỗi

Tạo trigger

 Cú pháp:

CREATE TRIGGER tên_trigger

ON tên_b ảng

<FOR | AFTER | INSTEAD OF>

<INSERT , UPDATE , DELETE>

AS

Lệnh_trigger

 Ý nghĩa:

– FOR | AFTER: Trigger được gọi thực thi sau khi thao tác insert | update | delete đã được thực hiện thành công

 Các dòng mới thêm đồng thời chứa trong bảng dữ liệu

và bảng inserted

 Các dòng bị xoá chỉ nằm trong bảng deleted

Trang 3

 INSTEAD OF: Trigger được gọi thực thi

trước khi thực hiện thao tác insert | update |

delete trên bảng.

– Các dòng mới thêm chỉ chứa trong bảng inserted

– Các dòng bị xoá nằm đồng thời trong bảng

deleted và bảng dữ liệu

 Chú ý:

– Table1 có trigger1, table2 có trigger2, nếu thao tác trên table1 có liên quan đến table2 thì trigger2 tự động thực thi, gọi là trigger lồng (Nested Trigger)

Trang 4

Ví dụ

 Cho lược đồ CSDL như sau:

Sinhvien(maSV, hoSV, tenSV, ns, phai, que, maK)

Khoa(maK, tenK)

Monhoc(maM, tenM, st)

Ketqua(maSV, maM, lanthi, diem)

 Không được tồn tại 2 khoa cùng tên

CREATE TRIGGER KTTenKhoa ON khoa AFTER INSERT,UPDATE

AS

BEGIN

IF update(tenK)

BEGIN

DECLARE @ten NVARCHAR(30)

SET @ten= (SELECT tenK FROM inserted)

DECLARE @count INT

SET @count = (SELECT count(*) FROM Khoa WHERE tenk=@ten)

IF (@count >1)

BEGIN

raiserror('Ten khoa nay da ton tai',16,1)

rollback tran

END

Vô hiệu hoá trigger

 Trigger cần bị vô hiệu hóa trong một số trường hợp:

– Trigger gây ra lỗi trong quá trình xử lý CSDL – Quá trình nhập hay khôi phục những dữ liệu không thỏa trigger

 Vô hiệu hóa trigger bằng lệnh DISABLE

TRIGGER có c ấu trúc như slide sau:

DISABLE TRIGGER tên_trigger

ON tên_ đối_tượng | DATABASE | SERVER

 Ví dụ: Vô hiệu hoá trigger KTTenKhoa

DISABLE TRIGGER KTTenKhoa

ON Khoa

Trang 5

 Hiệu lực hoá trigger bằng lệnh:

ENABLE TRIGGER tên_trigger

ON tên_ đối_tượng | DATABASE | SERVER

 Ví dụ: Hiệu lực hoá trigger KTTenKhoa

ENABLE TRIGGER KTTenKhoa

ON Khoa

Trigger và giao tác

 Khi một trigger được kích hoạt, SQL Server

luôn tạo ra một giao tác theo dõi những thay

đổi do câu lệnh kích hoạt trigger hoặc do bản

thân trigger gây ra Sự theo dõi này cho

phép CSDL quay trở lại trạng thái trước đó

bằng lệnh

ROLLBACK TRANSACT

 Ví dụ:

Bài tập

 Cho lược đồ CSDL như sau:

Sinhvien(maSV, hoSV, tenSV, ns, phai, que, maL) Lop(maL, tenL)

Monhoc(maM, tenM, st) Ketqua(maSV, maM, lanthi, diem)

Trang 6

 Tạo các trigger để kiểm tra:

– Không được tồn tại 2 lớp có cùng tên

– Số sinh viên của một lớp không vượt quá 100

– Sinh viên chỉ có tối đa 2 lần thi

– Điểm của sinh viên không được vượt quá 10

– Giả sử thêm cột sĩ số vào trong bảng Lop, hãy

cập nhật lại sĩ số của mỗi lớp khi có sinh viên mới

đăng ký hoặc chuyển lớp

Hết

Ngày đăng: 18/12/2017, 20:20

TỪ KHÓA LIÊN QUAN

w