Danh mục

Bài giảng Trigger

Số trang: 15      Loại file: pdf      Dung lượng: 146.56 KB      Lượt xem: 21      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trigger là gì??Là các chương trình lưu trữ bên trong CSDL. Mỗi trigger tương ứng với một bảng. Được kích hoạt khi có thao tác trên bảng. Được tạo bởi người dùng có quyền Trigger. Xuất hiện từ MySQL Server 5.0.2.Tại sao lại sử dụng Trigger??Là cơ chế hữu dụng đảm bảo tính toàn vẹn dữ liệu. Được kích hoạt tự động khi có các thao tác trên dữ liệu của bảng ( thêm, sửa, xóa) Thay thế kiểm tra dữ liệu bằng tay...
Nội dung trích xuất từ tài liệu:
Bài giảng TriggerTrigger Trigger là gì?? Là các chương trình lưu trữ bên trong CSDL. Mỗi trigger tương ứng với một bảng. Được kích hoạt khi có thao tác trên bảng. Được tạo bởi người dùng có quyền Trigger. Xuất hiện từ MySQL Server 5.0.2Tại sao lại sử dụng Trigger??Là cơ chế hữu dụng đảm bảo tính toàn vẹndữ liệu.Được kích hoạt tự động khi có các thao táctrên dữ liệu của bảng ( thêm, sửa, xóa)Thay thế kiểm tra dữ liệu bằng tay Cú phápCREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_bodyHoặcCREATE TRIGGER trigger_name trigger_time trigger_eventON table_nameFOR EACH ROWBEGIN...END Cú pháp Trong đó:trigger_name: tên triggertrigger_time: thời gian thực thi trigger − BEFORE − AFTERtrigger_event: Kiểu câu lệnh kích hoạt trigger − INSERT − UPDATE − DELETE Cú pháp Trong một Database không có 2 trigger cùng tên hoặc cùng chức năng. − Vd:  Không thể tạo 2 trigger BEFORE UPDATE hoặc AFTER UPDATE.  Begin…End để thực thi nhiều câu lệnh trong lệnh trong mệnh đề IF Các ghi chú khi tạo TriggersKhông cho phép• Gọi một thủ tục bên trong trigger• Tạo trigger cho khung nhìn hay bảng tạm• Sử dụng giao dịch trong trigger• ….Quy ước đặt tên:(BEFORE | AFTER)_tableName_(INSERT| UPDATE | DELETE)Tham chiếu giá trị cột trong Triggers• Từ khóa NEW and OLD cho phép bạn truy cập các cột trong những dòng bị ảnh hưởng bởi trigger ( không phân biệt hoa thường). Trong INSERT TRIGGER chỉ NEW.column_name được sử dụng. Trong DELETE TRIGGER chỉ có OLD.column_name được sử dụng Trong UPDATE TRIGGER − NEW.column_name để tham chiếu đến cột chứa giá trị mới (giá trị mới thêm vào) − OLD.column_name để tham chiếu đến cột chứa giá trị cũ ( đã tồn tại)− Trong Before Triggers, bạn có thể chỉnh sửa Cú pháp Tên cột với từ khóa OLD chỉ đọc không thay đổi được Tên cột với từ khóa NEW có thể đọc và chỉnh sửa Ví dụ: Trigger InsertDelimiter ||drop trigger if exists mon_hoc_insert||create trigger mon_hoc_insert before INSERT on monhocfor each rowbegin if new.so_tiet Ví dụ: Trigger UpdateDelimiter ||drop trigger if exists khoi_thi_update||create trigger khoi_thi_update BEFORE UPDATE on diemthifor each rowbegin if (new.diem 10) then set new.diem=null; end if;end||Delimiter;delimiter |drop trigger if exists update_so_tiet|create trigger update_so_tiet before update on mon_hocfor each rowbegin if new.so_tiet Xem thông tin các triggers của CSDL• Trên tất cả các CSDL SELECT * FROM Information_Schema.Triggers• Trên CSDL chỉ địnhSELECT * FROM Information_Schema.TriggersWHERE Trigger_schema = database_name;• Trên một bảng CSDLSELECT * FROM Information_Schema.TriggersWHERE Trigger_schema = database_name ANDEvent_object_table = table_name; Xoá một triggersDROP TRIGGER table_name.trigger_nameLưu ý: MySQL không cung cấp câu lệnh để chỉnh sửa trigger. Để chỉnh sửa trigger, đầu tiên bạn phải xoá trigger sau đó tạo lại.Cảm ơn

Tài liệu được xem nhiều: