Hình vẽ 17. Trigger tác động trên dòng dữ liệu
13.2.QUẢN LÝ TRIGGER
13.2.1. Phân biệt database trigger
Trigger và thủ tục
Trigger Thủ tục
Lệnh tạo CREATE TRIGGER Lệnh tạo CREATE PROCEDURE
Lưu giữ trong Từ điển dữ liệu dưới dạng mã nguồn và dạng p-code
Lưu giữ trong Từ điển dữ liệu dưới dạng mã nguồn và dạng p-code
Được gọi ngầm định Thực hiện theo lời gọi tường minh
Không cho phép dùng: COMMIT,
ROLLBACK, SAVEPOINT
Cho phép dùng: COMMIT, ROLLBACK,
SAVEPOINT.
Database Trigger và Form Trigger
Database Trigger Form Trigger
Được thực hiện khi có tác động lên database do ứng dụng hoặc do chính các công cụ của Oracle
Được thực hiện chỉ bởi các tác động ngay trên ứng dụng
Được kích hoạt bởi các lệnh SQL Được kích bởi các sự kiện trên ứng dụng
Phân biệt hai loại trigger trên câu lệnh và trên dòng dữ liệu
Không phân biệt
Tuỳ theo lỗi xảy ra, trigger có thể gây ra rollback câu lệnh
Tuỳ theo lỗi xảy ra, có thể rollback toàn bộ giao dịch
Database Trigger được kích hoạt độc lập với các Form Trigger
13.2.2. Thay đổi trạng thái của database trigger
Cho phép/ không cho phép kích hoạt một databse trigger Cú pháp:
Với:
trigger_name Tên trigger; Ví dụ:
-- Cho phép trigger được hoạt động
ALTER TRIGGER check_sal ENABLE;
Cho phép/ không cho phép kích hoạt tất cả các databse trigger của một bảng Cú pháp:
ALTER TABLE table_name DISABLE | ENABLE ALL TRIGGERS; Với:
table_name Tên bảng;
Ví dụ:
-- Không cho phép các trigger ứng với bảng emp được hoạt động ALTER TABLE emp DISABLE ALL TRIGGERS;
Biên dịch lại databse trigger Cú pháp:
ALTER TRIGGER trigger_name COMPILE; Ví dụ:
-- Biên dịch lại trigger check_sal sau khi sửa đổi nội dung ALTER TRIGGER check_sal COMPILE;
13.2.3. Huỷ bỏ trigger
Sử dụng câu lệnh SQL để huỷ bỏ trigger. Cú pháp:
DROP TRIGGER trigger_name; Ví dụ:
DROP TRIGGER check_sal;
13.2.4. Lưu ý khi sử dụng trigger
Các trường hợp kiểm tra trigger
Kiểm tra trigger đúng với thao tác dữ liệu như dự định.
Kiểm tra thực hiện trigger theo đúng như mệnh đề When.
Kiểm tra ảnh hưởng của trigger đối với các trigger khác.
Kiểm tra ảnh hưởng của các trigger khác đối với trigger đang xem xét.
Thứ tự thực hiện trigger và các kiểm tra ràng buộc: