Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
1,62 MB
Nội dung
Các trigger Chương Review Thủ tục lưu § Một thủ tục lưu tập hợp câu lệnh SQL chưa biên dịch § Người phát triển sở liệu người quản trị viết thủ tục lưu để thực thi nhiệm vụ quản trị thông thường để áp dụng cho quy tắc xử lỹ liệu phức tạp Thủ tục lưu chứa câu lệnh thao tác với liệu câu lệnh nhận liệu trả § Các thủ tục lưu tăng tốc câu truy vấn, làm cho việc truy cập liệu nhanh hơn, hỗ trợ modul lập trình, trì tính quán tăng cường tính bảo mật Database Design and Implementation with SQL Server 2000 / Session / 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ị liệu cập nhật thông tin vào bảng n Thủ tục lưu người dùng định nghĩa § Câu lệnh CREATE PROCEDURE sử dụng để tạo thủ tục lưu § Câu lệnh EXECUTE sử dụng để chạy thủ tục lưu § Các tham biến sử dụng để nhập vào xuất giá trị từ thủ tục lưu n Database Design and Implementation with SQL Server 2000 / Session / of 35 Review § Có ba cách để biên dịch lại thủ tục lưu: Sử dụng thủ tục lưu hệ thống sp_recompile n Chỉ định WITH RECOMPILE với lệnh CREATE PROCEDURE n Chỉ định WITH RECOMPILE với lệnh EXECUTE § Câu lệnh ALTER PROCEDURE sử dụng để chỉnh sửa thủ tục lưu § Các mã trả câu lệnh RAISERROR dùng để thông báo cho người sử dụng lỗi xuất thủ tục lưu n Database Design and Implementation with SQL Server 2000 / Session / of 35 Mục đích § Định nghĩa trigger § Liệt kê lợi ích trigger § Hiểu sử dụng lệnh CREATE TRIGGER T-SQL § Mô tả bảng Inserted Deleted sử dụng trigger § Giải thích kiểu trigger: INSERT, UPDATE, DELETE § Xác định lệnh SQL sử dụng trigger § Khai báo trigger xếp theo tầng trigger xếp lồng vào § Khai báo trigger INSTEAD OF § Chỉ nhân tố tác động đến việc thực thi hành trigger Database Design and Implementation with SQL Server 2000 / Session / of 35 Các Trigger Các trigger thủ tục lưu, chúng thực thi để phản ứng lại thao tác chèn, cập nhật, xóa bảng n Các trigger kích hoạt cách tự động có thao tác xuất n Các trigger sử dụng cách phổ biến để ép thao tác tuân theo quy tắc định n Các trigger đảm bảo tính toàn vẹn tính quán liệu n Database Design and Implementation with SQL Server 2000 / Session / of 35 Các trigger Allen Brian Cathy Greg Derek Mark Carl Kathy Database Design and Implementation with SQL Server 2000 / Session / 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 / of 35 Sử dụng Trigger So sánh kiểu liệu n Đọc liệu từ bảng nằm sở liệu khác n Thay đổi theo tầng xoá liên tục bảng liên quan sở liệu n Huỷ bỏ thay đổi không n Tuân theo giới hạn,các giới hạn phức tạp việc bắt lỗi ràng buộc CHECK n Thực thi thủ tục lưu cục thủ tục lưu từ xa n Database Design and Implementation with SQL Server 2000 / Session / of 35 Tạo Trigger Trigger tạo công cụ Enterprise Manager, Query Analyzer n Trong hai trường hợp, câu lệnh CREATE TRIGGER sử dụng để tạo trigger n Cú pháp: CREATE TRIGGER Trigger_name ON table FOR [DELETE, INSERT, UPDATE] [WITH ENCRYPTION] AS Sql_statements n Database Design and Implementation with SQL Server 2000 / Session / 10 of 35 Các Trigger UPDATE mức bảng n Ví dụ: CREATE TRIGGER NoUpdateDiscount ON discounts FOR UPDATE AS IF (SELECT discount FROM inserted) > 12 BEGIN PRINT ‘You cannot assign a discount greater than 12 percent’ ROLLBACK TRANSACTION END Database Design and Implementation with SQL Server 2000 / Session / 21 of 35 Các Trigger UPDATE mức bảng Database Design and Implementation with SQL Server 2000 / Session / 22 of 35 Các Trigger DELETE Một trigger DELETE thực xoá hàng từ bảng n trigger DELETE thực công việc sau: n Xoá hàng từ bảng trigger n Chèn hàng xoá vào bảng Deleted n Kiểm tra hàng bảng Deleted để xác định tác vụ trigger thực n Database Design and Implementation with SQL Server 2000 / Session / 23 of 35 Các Trigger DELETE n Ví dụ: CREATE TRIGGER NoDelete9901 ON pub_info FOR DELETE AS IF (SELECT pub_id FROM deleted) = 9901 BEGIN PRINT ‘You cannot delete the details of publisher 9901’ ROLLBACK TRANSACTION END Database Design and Implementation with SQL Server 2000 / Session / 24 of 35 Các Trigger DELETE Database Design and Implementation with SQL Server 2000 / Session / 25 of 35 Các lệnh SQL ko thể sử dụng Trong Trigger Database Design and Implementation with SQL Server 2000 / Session / 26 of 35 trigger dây chuyền Các trigger dây chuyền sử dụng để bắt buộc toàn vẹn tham chiếu n Khi thay đổi xuất bảng, trigger dây chuyền sửa đổi liệu bảng liên quan n trigger sử dụng để thực việc cập nhật dây chuyền xoá mà ảnh hưởng đến ràng buộc cac khoá khoá n Các trigger thực sau ràng buộc kiểm tra; tác vụ bỏ qua ràng buộc, trigger không thực thi n Database Design and Implementation with SQL Server 2000 / Session / 27 of 35 trigger lồng Các trigger lồng tác vụ trigger khởi tạo trigger khác, tới lượt lại khởi tạo trigger khác n Các trigger lồng tới 32 mức n Để cho phép lồng trigger, sử dụng thủ tục lưu hệ thống sp_configure sau: n sp_configure ‘nested trigger’, n Để ko cho phép trigger lồng nhau, thực lệnh đây: sp_configure ‘nested trigger’, Database Design and Implementation with SQL Server 2000 / Session / 28 of 35 Các Trigger INSTEAD OF Một trigger INSTEAD OF chứa đoạn mã thay lệnh thao tác với sở liệu gốc n Các trigger INSTEAD OF hữu dụng việc sửa đổi liệu thực thi view mà chúng cập nhật theo cách thông thường n Các trigger INSTEAD OF dựa tác vụ sửa đổi liệu n Database Design and Implementation with SQL Server 2000 / Session / 29 of 35 Các Trigger INSTEAD OF n Ví dụ định nghĩa view: CREATE VIEW Emp_pub AS SELECT emp_id, lname, job_id, pub_name FROM employee e, publishers p WHERE e.pub_id = p.pub_id Database Design and Implementation with SQL Server 2000 / Session / 30 of 35 INSTEAD OF Triggers on View n Ví dụ định nghĩa trigger: CREATE TRIGGER del_emp ON Emp_pub INSTEAD OF DELETE AS DELETE employee WHERE emp_id IN (SELECT emp_id FROM DELETED) Database Design and Implementation with SQL Server 2000 / Session / 31 of 35 Các Trigger Hiệu suất Chi phí dành cho trigger nhỏ n Hầu hết thời gian đòi hỏi để chạy trigger dành cho việc tham chiếu đến bảng khác, nằm thiết bị sở liệu n Các bảng Deleted Inserted có mặt nhớ n Database Design and Implementation with SQL Server 2000 / Session / 32 of 35 Tổng kết § Các trigger thủ tục lưu mà thực tự động để tương tác với tác vụ thêm, cập nhật xoá bảng § Các trigger thường sử dụng để thực quy tắc nghiệp vụ đòi hỏi § Lệnh CREATE TRIGGER sử dụng để tạo trigger § Các trigger truy nhập tới bảng logic Inserted Deleted Các bảng chứa hình ảnh liệu trước đó, sau trình cập nhật Database Design and Implementation with SQL Server 2000 / Session / 33 of 35 Tổng kết § Các kiểu trigger: INSERT: Thực xuất việc thêm liệu vào bảng Các trigger đảm bảo liệu chèn vào bảng hợp lệ n UPDATE: Thực tác vụ cập nhật xảy bảng Các trigger thi hành mức bảng mức cột n DELETE: Thực liệu xoá khỏi bảng § Các trigger dây chuyền sửa đổi liệu bảng liên quan, thay đổi xuất bảng n Database Design and Implementation with SQL Server 2000 / Session / 34 of 35 Tổng kết § Các trigger lồng tác vụ trigger khởi tạo trigger khác, tới lượt lại khởi tạo trigger khác § Thủ tục lưu hệ thống sp_configure sử dụng phép không cho phép lồng trigger § trigger INSTEAD OF chứa đoạn mã thay lệnh thao tác với liệu gốc § Các trigger INSTEAD OF hữu dụng việc sửa đổi liệu thực view mà chúng cập nhật theo cách thông thường § Thời gian đòi hỏi để thực thi trigger chủ yếu dành nhiều cho việc tham chiếu đến bảng khác dành cho bảng logic Database Design and Implementation with SQL Server 2000 / Session / 35 of 35 [...]... 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 n 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 n Database Design and Implementation with SQL Server 2000 / Session 9 / 12... Implementation with SQL Server 2000 / Session 9 / 28 of 35 Các Trigger INSTEAD OF Một trigger INSTEAD OF chứa đoạn mã thay thế các lệnh thao tác với cơ sở dữ liệu gốc n Các trigger INSTEAD OF hữu dụng nhất khi việc sửa đổi dữ liệu được thực thi trên view mà chúng không thể cập nhật theo cách thông thường n Các trigger INSTEAD OF có thể dựa trên chỉ một tác vụ sửa đổi dữ liệu n Database Design and Implementation... để tạo một trigger § Các trigger truy nhập tới các bảng logic Inserted và Deleted Các bảng này chứa các hình ảnh của dữ liệu trước đó, và sau quá trình cập nhật Database Design and Implementation with SQL Server 2000 / Session 9 / 33 of 35 Tổng kết § Các kiểu trigger: INSERT: Thực hiện mỗi khi xuất hiện việc thêm mới dữ liệu vào bảng Các trigger này đảm bảo rằng dữ liệu được chèn vào bảng là hợp lệ... Implementation with SQL Server 2000 / Session 9 / 31 of 35 Các Trigger và Hiệu suất Chi phí dành cho các trigger là nhỏ n Hầu hết thời gian đòi hỏi để chạy một trigger là dành cho việc tham chiếu đến các bảng khác, có thể nằm trong các thiết bị cơ sở dữ liệu n Các bảng Deleted và Inserted luôn có mặt trong bộ nhớ n Database Design and Implementation with SQL Server 2000 / Session 9 / 32 of 35 Tổng kết §... Inserted và Deleted Các Trigger truy nhập tới hai bảng logic có tên là Inserted và Deleted n Bảng Inserted và Deleted chứa ảnh của dữ liệu trước và sau quá trình cập nhật n Giản đồ tương đồng với bảng đã được cập nhật n 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 n Database Design and Implementation with SQL Server 2000 / Session 9 / 13 of 35 Các... 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 n trigger INSERT thực thi các thao tác dưới đây: n Chèn một bản sao của hàng mới vao bảng Inserted n 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 Nếu tìm thấy các... ra trên một bảng Các trigger này có thể được thi hành ở mức bảng hoặc mức cột n DELETE: Thực hiện khi dữ liệu được xoá khỏi một bảng § Các trigger dây chuyền sửa đổi dữ liệu trong các bảng liên quan, nếu một thay đổi xuất hiện trong một bảng n Database Design and Implementation with SQL Server 2000 / Session 9 / 34 of 35 Tổng kết § Các trigger lồng nhau khi một tác vụ trong một trigger này khởi tạo một... mã thay thế các lệnh thao tác với dữ liệu gốc § Các trigger INSTEAD OF hữu dụng khi việc sửa đổi dữ liệu được thực hiện trên view mà chúng không thể cập nhật theo cách thông thường § Thời gian đòi hỏi để thực thi một trigger chủ yếu dành nhiều cho việc tham chiếu đến các bảng khác hơn là dành cho các bảng logic Database Design and Implementation with SQL Server 2000 / Session 9 / 35 of 35 ... 2000 / Session 9 / 18 of 35 Các Trigger UPDATE mức cột n 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. .. Server 2000 / Session 9 / 23 of 35 Các Trigger DELETE n Ví dụ: CREATE TRIGGER NoDelete9901 ON pub_info FOR DELETE AS IF (SELECT pub_id FROM deleted) = 9901 BEGIN PRINT ‘You cannot delete the details of publisher 9901’ ROLLBACK TRANSACTION END Database Design and Implementation with SQL Server 2000 / Session 9 / 24 of 35 Các Trigger DELETE Database Design and Implementation with SQL Server 2000 / Session ... Implementation with SQL Server 2000 / Session / of 35 Các trigger Allen Brian Cathy Greg Derek Mark Carl Kathy Database Design and Implementation with SQL Server 2000 / Session / of 35 Các trigger Allen... Design and Implementation with SQL Server 2000 / Session / 13 of 35 Các kiểu Trigger Database Design and Implementation with SQL Server 2000 / Session / 14 of 35 Các Trigger INSERT Một trigger... Design and Implementation with SQL Server 2000 / Session / 16 of 35 Các Trigger INSERT Database Design and Implementation with SQL Server 2000 / Session / 17 of 35 Các Trigger UPDATE Một trigger