Điểm mạnh: Tính toán cập nhật dữ liệu tự động Kiểm tra dữ liệu nhập Kiểm tra ràng buộc phức tạp Kiểm tra tính toàn vẹn của Cơ sở dữ liệu Bẫy lỗi dễ hiểu, bắt lỗi logic nghiệp vụ ở mức cơ sở dữ liệu Kiểm soát những thay đổi của dữ liệu trong bảng Điểm yếu: Không tạo và tham chiếu bảng Không tạo, thay đổi xóa cấu trúc đối tượng sẵn có trong Cơ sở dữ liệu Không gán cấp quyền cho người dùng Trigger có thể tạo ra 1 bảng ảo mà khi thao tác trên Cơ sở dữ liệu nó sẽ tự động cập nhật Chỉ là một phần mở rộng của việc kiểm tra tính hợp lệ của dữ liệu chứ không thay thế được hoàn toàn công việc này. Hoạt động ngầm ở trong cơ sở dữ liệu, không hiển thị ở tầng giao diện. Do đó, khó chỉ ra được điều gì xảy ra ở tầng cơ sở dữ liệu. Thực hiện các update lên bảng dữ liệu vì thế nó làm gia tăng lượng công vieejcc lên cơ sở dữ liệu và làm cho hệ thống chạy chậm.
Câu Hãy cho biết điểm mạnh điểm yếu chế trigger Trình bày tương phản trigger với ràng buộc toàn vẹn khác hỗ trợ SQL Trả lời: Điểm mạnh: - Tính toán cập nhật liệu tự động - Kiểm tra liệu nhập - Kiểm tra ràng buộc phức tạp - Kiểm tra tính toàn vẹn Cơ sở liệu - Bẫy lỗi dễ hiểu, bắt lỗi logic nghiệp vụ mức sở liệu - Kiểm soát thay đổi liệu bảng Điểm yếu: - Không tạo tham chiếu bảng - Không tạo, thay đổi xóa cấu trúc đối tượng sẵn có Cơ sở liệu - Không gán cấp quyền cho người dùng - Trigger tạo bảng ảo mà thao tác Cơ sở liệu tự động cập nhật - Chỉ phần mở rộng việc kiểm tra tính hợp lệ liệu không thay hoàn toàn công việc - Hoạt động ngầm sở liệu, không hiển thị tầng giao diện Do đó, khó điều xảy tầng sở liệu - Thực update lên bảng liệu làm gia tăng lượng công vieejcc lên sở liệu làm cho hệ thống chạy chậm Câu Cho lược đồ quan hệ Một nhân viên làm viêc nhiều phòng ban Cột pct_time quan Works tỉ lệ % thời gian nhân viên làm việc cho phòng ban tương ứng Viết RBTV, assertions triggers để đảm bảo yêu cầu sau: Mỗi nhân viên phải có lương tối thiểu 1000 Mọi người quản lý nhân viên Tổng tỉ lệ % thời gian làm việc cho phòng ban nhân viên phải 100% Một người quản lý phải có lương cao nhân viên mà người quản lý Bất nhân viên tăng lương, lương người quản lý phải tăng tương ứng 6 Bất nhân viên tăng lương, lương người quản lý phải tăng tương ứng Hơn nữa, nhân viên tăng lương, ngân sách phòng ban tương ứng phải tăng lớn tổng lương tất nhân viên thuộc phòng Bài làm Create database BT2 go use BT2 go Create table Emp ( eid int primary key, ename nvarchar(max), age int, salary real ); go create table Dept ( did int primary key, budget real, managerid int not null, foreign key (managerid) references Emp(eid) ); go create table Works ( eid int, did int, foreign key (eid) references Emp(eid), foreign key (did) references Dept(did), pct_time int ); Mỗi nhân viên phải có lương tối thiểu 1000 CREATE TRIGGER TG_SALARY_LESS ON Emp AFTER INSERT,DELETE AS declare @new int, @old int, @ssn int; select @new = ne.salary, @old = ol.salary, @ssn = ol.ename from inserted ne, deleted ol; where ne.ename = ol.ename if(@new >= 1000) BEGIN UPDATE Emp SET salary = @new where ename = @ssn END ...6 Bất nhân viên tăng lương, lương người quản lý phải tăng tương ứng Hơn nữa, nhân viên tăng lương, ngân sách phòng ban tương ứng phải tăng