Tải bản đầy đủ (.ppt) (35 trang)

Các trigger - bài giảng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (461.83 KB, 35 trang )

Các trigger
Chương 9


Review
Thủ tục lưu
 Một thủ tục lưu là một tập hợp các câu lệnh SQL chưa biên
dịch.
 Người phát triển cơ sở dữ liệu hoặc người quản trị viết ra các
thủ tục lưu để thực thi các nhiệm vụ quản trị thông thường hoặc
để áp dụng cho những quy tắc xử lỹ dữ liệu phức tạp. Thủ tục
lưu chứa các câu lệnh thao tác với dữ liệu hoặc các câu lệnh
nhận dữ liệu trả về.
 Các thủ tục lưu tăng tốc các câu truy vấn, làm cho việc
truy cập dữ liệu nhanh hơn, hỗ trợ các modul lập trình,
duy trì tính nhất quán và tăng cường tính bảo mật.
Database Design and Implementation with SQL Server 2000 / Session 9 / 2 of 35


Review
 Có hai loại thủ tục lưu :
Thủ tục lưu hệ thống đề cập đến phương pháp quản
trị dữ liệu và cập nhật thông tin vào các bảng.

Thủ tục lưu do người dùng định nghĩa.
 Câu lệnh CREATE PROCEDURE được sử dụng để tạo ra thủ
tục lưu.
 Câu lệnh EXECUTE được sử dụng để chạy thủ tục lưu.
 Các tham biến có thể được sử dụng để nhập vào hoặc
xuất ra các giá trị từ thủ tục lưu.



Database Design and Implementation with SQL Server 2000 / Session 9 / 3 of 35


Review
 Có ba cách để biên dịch lại các thủ tục lưu:
Sử dụng thủ tục lưu hệ thống sp_recompile

Chỉ định WITH RECOMPILE với lệnh CREATE
PROCEDURE

Chỉ định WITH RECOMPILE với lệnh EXECUTE
 Câu lệnh ALTER PROCEDURE được sử dụng để chỉnh sửa
một thủ tục lưu.
 Các mã trả về và câu lệnh RAISERROR được dùng để
thông báo cho người sử dụng về các lỗi xuất hiện trong
thủ tục lưu


Database Design and Implementation with SQL Server 2000 / Session 9 / 4 of 35


Mục đích
 Định nghĩa các trigger.
 Liệt kê các lợi ích của trigger.
 Hiểu và sử dụng lệnh CREATE TRIGGER T-SQL.
 Mô tả các bảng Inserted và Deleted được sử dụng bởi trigger
 Giải thích các kiểu trigger: INSERT, UPDATE, và DELETE
 Xác định được các lệnh SQL nào không thể sử dụng trong
các trigger

 Khai báo trigger xếp theo tầng và trigger xếp lồng vào nhau.
 Khai báo các trigger INSTEAD OF
 Chỉ ra các nhân tố tác động đến việc thực thi hành trigger

Database Design and Implementation with SQL Server 2000 / Session 9 / 5 of 35


Các Trigger
Các trigger là các thủ tục lưu, chúng được thực thi để
phản ứng lại các thao tác chèn, cập nhật, hoặc xóa
trong một bảng.
 Các trigger được kích hoạt một cách tự động khi có
một trong các thao tác trên xuất hiện.
 Các trigger được sử dụng một cách phổ biến để ép các
thao tác tuân theo các quy tắc nhất định.
 Các trigger đảm bảo tính tồn vẹn và tính nhất quán
của dữ liệu.


Database Design and Implementation with SQL Server 2000 / Session 9 / 6 of 35


Các trigger

Allen
Brian
Cathy
Greg
Derek


Mark
Carl
Kathy

Database Design and Implementation with SQL Server 2000 / Session 9 / 7 of 35


Các trigger

Allen
Brian
Cathy
Greg
Derek

Trigger Fired

Mark
Carl
Kathy
Derek
Inserted

Database Design and Implementation with SQL Server 2000 / Session 9 / 8 of 35


Sử dụng Trigger
So sánh kiểu dữ liệu.
 Đọc dữ liệu từ các bảng nằm trong cơ sở dữ liệu khác.
 Thay đổi theo tầng hoặc xoá liên tục các bảng liên quan

trong một cơ sở dữ liệu
 Huỷ bỏ các thay đổi không đúng
 Tuân theo các giới hạn,các giới hạn đó phức tạp hơn việc
bắt lỗi bằng ràng buộc CHECK
 Thực thi các thủ tục lưu cục bộ và các thủ tục lưu từ
xa


Database Design and Implementation with SQL Server 2000 / Session 9 / 9 of 35


Tạo Trigger
Trigger có thể được tạo bằng cơng cụ Enterprise
Manager, hoặc Query Analyzer.
 Trong cả hai trường hợp, câu lệnh CREATE TRIGGER
được sử dụng để tạo ra trigger.
 Cú pháp:
CREATE TRIGGER Trigger_name
ON table
FOR [DELETE, INSERT, UPDATE]
[WITH ENCRYPTION]
AS Sql_statements


Database Design and Implementation with SQL Server 2000 / Session 9 / 10 of 35


Hướng dẫn tạo các Trigger
Một trigger có thể kết hợp ba thao tác thực hiện trên
một bảng như INSERT, UPDATE, và DELETE.

 Một trigger thích ứng với một bảng đơn.
 Tuỳ chọn WITH ENCRYPTION có thể được sử dụng để
làm ẩn các khai báo của một trigger đối với người sử
dụng.Tuy nhiên, một trigger đã được mã hố sẽ
khơng thể bị giải mã.
 Một trigger có thể tham chiếu đến một view hoặc một
bảng tạm thời, nhưng không thể kết hợp với chúng.
 Một trigger có thể bao gồm các câu lệnh SQL với số
lượng bất kì.


Database Design and Implementation with SQL Server 2000 / Session 9 / 11 of 35


Hướng dẫn tạo các Trigger
Mặc định, chỉ có người tạo ra cơ sở dữ liệu đó mới có
quyền tạo một trigger trong nó. Quyền này khơng thể
chuyển giao .
 Một trigger chỉ có thể được tạo trong cơ sở dữ liệu
hiện hành. Tuy nhiên, trigger có thể tham chiếu đến
các đối tượng nằm trong cơ sở dữ liệu khác.


Database Design and Implementation with SQL Server 2000 / Session 9 / 12 of 35


Sử dụng bảng Inserted và
Deleted
Các Trigger truy nhập tới hai bảng logic có tên là
Inserted và Deleted.

 Bảng Inserted và Deleted chứa ảnh của dữ liệu
trước và sau quá trình cập nhật.
 Giản đồ tương đồng với bảng đã được cập nhật .
 Dữ liệu trong bảng không bị tác động bởi thao tác cập
nhật sẽ không nằm trong bảng Inserted và Deleted.


Database Design and Implementation with SQL Server 2000 / Session 9 / 13 of 35


Các kiểu Trigger

Database Design and Implementation with SQL Server 2000 / Session 9 / 14 of 35


Các Trigger INSERT
Một trigger INSERT được thực thi bất cứ khi nào có
thao tác chèn thêm dữ liệu vào một bảng.
 trigger INSERT thực thi các thao tác dưới đây:

Chèn một bản sao của hàng mới vao bảng
Inserted.

Kiểm tra hàng mới trong bảng Inserted, để xác
định xem dữ liệu được chèn vào có hợp lệ hay
khơng .

Nếu tìm thấy các giá trị trong hàng chèn vào phù
hợp điều kiện chỉ ra, chèn chúng vào trong bảng
trigger .



Database Design and Implementation with SQL Server 2000 / Session 9 / 15 of 35


Các Trigger INSERT


Ví dụ:
CREATE TRIGGER CheckRoyalty
ON roysched
FOR INSERT AS
IF (SELECT royalty FROM inserted) > 30
BEGIN
PRINT ‘RoyaltyTrigger: Royalty cannot
exceed 30’
PRINT ‘Change the royalty to a value
less than 30’
ROLLBACK TRANSACTION
END
Database Design and Implementation with SQL Server 2000 / Session 9 / 16 of 35


Các Trigger INSERT

Database Design and Implementation with SQL Server 2000 / Session 9 / 17 of 35


Các Trigger UPDATE
Một trigger UPDATE được thực hiện khi một tác vụ

cập nhật thực thi trên bảng.
 Nó thực thi các tác vụ dưới đây:

Di chuyển hàng dữ liệu gốc vào bảng logic
Deleted.

Chèn một hàng mới vào bảng Inserted, và bảng
trigger.

Tính tốn các giá trị trong các bảng Deleted và
Inserted để xác định can thiệp cần thiết.
 Các trigger UPDATE có thể được tạo ra để xác nhận
việc cập nhật trên một cột đơn, hoặc trên toàn bộ
bảng.


Database Design and Implementation with SQL Server 2000 / Session 9 / 18 of 35


Các Trigger UPDATE
mức cột


Ví dụ:
CREATE TRIGGER NoUpdatePayterms
ON sales
FOR UPDATE AS
IF UPDATE (payterms)
BEGIN
PRINT ‘You cannot modify the payment

terms for an order’
ROLLBACK TRANSACTION
END
Database Design and Implementation with SQL Server 2000 / Session 9 / 19 of 35


Column-level UPDATE
Triggers Contd…

Database Design and Implementation with SQL Server 2000 / Session 9 / 20 of 35



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×