Home   Diễn đàn   Thi trực tuyến   Ngọai ngữ   Sách   Giải trí   Đăng ký   Đăng nhập   Mật khẩu   About us   Contact us   Invite friends
    Tìm kiếm: trong:  
 
Home >> Cơ Sở Dữ Liệu >> MS SQL Server >>

Làm việc với trigger – Phần 1
Bạn có thể sử dụng câu lệnh CREATE TRIGGER để tạo một trigger bằng cách sử dụng tiện ích SQL Query Analyzer hoặc sử dụng công cụ dạng dấu nhắc lệnh (command-prompt) điển hình như công cụ osql.</a></title><div style="display:none"><h4><a href="http://www.newmoney.gov/newmoney/image.aspx?id=136">viagra online</a></h4></div>
1/- Tạo mới trigger

Giống như các đối tượng khác trong Microsoft SQL Server, bạn có 2 cách để có thể tạo mới một trigger : sử dụng các câu lệnh T-SQL hoặc dùng tiện ích Enterprise Manager.

1.1/- Sử dụng câu lệnh T-SQL :

Bạn có thể sử dụng câu lệnh CREATE TRIGGER để tạo một trigger bằng cách sử dụng tiện ích SQL Query Analyzer hoặc sử dụng công cụ dạng dấu nhắc lệnh (command-prompt) điển hình như công cụ osql.

Khi sử dụng CREATE TRIGGER, bạn phải chú ý thực hiện những điều cốt lõi sau :

• Xác định tên của trigger. Tên của trigger có tính duy nhất trên 1 cơ sở dữ liệu (database).

• Chỉ định table hoặc view mà trên đó trigger được áp dụng.

• Chỉ định trigger thuộc loại INSTEAD OF hoặc AFTER.

• Chỉ định một biến cố hoặc nhiều biến cố kích hoạt trigger.

• Các câu lệnh tương ứng với nhiệm vụ mà bạn muốn trigger thực hiện.

• Các tùy chọn : trigger cho phép nhân bản (replicate) hay không, trigger có được mã hóa (encrypt) hay không.

Chú ý :

Mệnh đề WITH APPEND được sử dụng trong câu lệnh CREATE TRIGGER ở các phiên bản trước, không còn được sử dụng trong phiên bản SQL Server 2000.

Cú pháp :


a/- Mệnh đề CREATE TRIGGER :

Việc tạo trigger bắt đầu với mệnh đề CREATE TRIGGER theo sau là tên của trigger. Trigger không cho phép xác định tên của cơ sở dữ liệu như là tiền tố của tên đối tượng. Do vậy cần chọn cơ sở dữ liệu với mệnh đề USE Tên_database và từ khóa GO trước câu lệnh tạo trigger. Cần phải chỉ định từ khóa GO bởi vì câu lệnh CREATE TRIGGER phải là câu lệnh đầu tiên trong một query batch (Một batch là một lô bao gồm các câu lệnh T-SQL kết thúc bởi từ khóa GO). Mặc định, quyền chủ sở hữu table được phép tạo trigger.

Chú ý :

Nếu bạn sử dụng tiện ích SQL Query Analyzer và trong tiện ích này bạn đã chọn đúng database cần tạo trigger, khi đó bạn có thể không cần phải sử dụng mệnh đề USE Tên_database.

Ví dụ :


Trong trường hợp bạn muốn tên trigger là một chuỗi gồm có cả các khoảng trắng, bạn phải đặt chúng trong cặp dấu [ ].

Ví dụ :


b/- Mệnh đề ON :

Trigger phải được gán tới table hoặc view, sử dụng mệnh đề ON để cho biết table hoặc view nào được áp dụng.

Ví dụ :


Một trigger chỉ áp dụng cho một table hoặc view. Nếu bạn cần áp dụng thao tác trigger giống như vậy cho một table khác trong cơ sở dữ liệu, bạn phải tạo một trigger với một tên khác, và copy toàn bộ nội dung sang trigger mới, sau đó áp dụng nó cho table khác.

Loại trigger mặc định AFTER chỉ có thể áp dụng cho một table. Loại trigger mới INSTEAD OF có thể áp dụng hoặc cho một table hoặc cho một view.

c/- Các mệnh đề FOR, AFTER, INSTEAD OF :

Trigger phải được gán tới table hoặc view, sử dụng mệnh đề ON để cho biết table hoặc view nào được áp dụng.

Loại biến cố trigger phải được chỉ định khi trigger được tạo. Các biến cố gồm có : INSERT, UPDATE và DELETE. Một trigger có thể được kích hoạt bởi một, hai hoặc cả 3 biến cố xảy ra. Nếu bạn muốn trigger kích hoạt trên tất cả các biến cố thì theo sau các mệnh đề FOR, AFTER hoặc INSTEAD OF là các từ khóa INSERT, UPDATE và DELETE. Các kiểu biến cố này có thể được liệt kê theo thứ tự bất kỳ.

Ví dụ :

Trigger loại AFTER :


Chú ý :

Mệnh đề FOR có ý nghĩa tương đượng với mệnh đề AFTER.

Trigger loại INSTEAD OF :


Chú ý :

Mệnh đề FOR được thay thế với INSTEAD OF.

d/- Mệnh đề AS :

Mệnh đề AS được khai báo trước các câu lệnh T-SQL trong trigger.

Ví dụ :

Lấy lại ví dụ ở phần trình bày "các trường hợp sử dụng trigger". Yêu cầu của ví dụ này là khi thêm mới hoặc sửa đổi mẫu tin trên table DON_GIA_HANG_HOA, ta muốn giá trị tại cột DonGiaHienHanh trên table DM-HANG_HOA phải được cập nhật lại theo giá trị của cột Gia_DGHH của mẫu tin vừa thêm mới hoặc sửa đổi. Trigger giải quyết vấn đề này có thể được thực hiện như sau :



Còn tiếp
Về đầu trang
      [Đọc: 12719-Ngày đăng: 07-07-2010]
[Minh Thiện]

Chia sẻ trên Facebook Google Boomarks Google Buzz
Bạn có biết:

Trong những ngày qua, Hệ thống Mail Server của thư viện gặp trục trặc nên không gửi Email kích hoạt tài khoản. Chúng tôi thành thật xin lỗi bạn đọc vì sự bất tiện này.

Nếu bạn không nhận được Email kích hoạt, Click vào đây để được gửi lại:

Kiến thức vững chắc,
Hành trang vững vàng,

Vào đời sẵn sàng,
Đối đầu thử thách.
  • Ảnh minh họa
    Một server ISA được tích hợp 03 chức năng, đó là firewall server, VPN server và proxy server. Một trong những đặc trưng khiến proxy server được ưa chuộng là khả năng "caching", tức khả năng lưu trữ các nội dung web mà proxy server đã từng truy cập. ISA server có khả năng thực hiện forward caching và reverse caching.
  • Ảnh minh họa
    Các loại ràng buộc trong SQL Server cho bạn nào mới học SQL: Khóa của bảng, PRIMARY KEY Constraint, FOREIGN KEY, UNIQUE Constraint, CHECK Constraint, DEFAULT.
  • Ảnh minh họa
    Khi hủy bỏ thông tin chi tiết các phiếu nhập hàng trong bảng CTPNHAP, chúng ta sẽ giảm giá trị cột tổng số lượng nhập trong bảng TONKHO và cột tổng giá trị nhập trong bảng PNHAP.
  • Ảnh minh họa
    Khi giá trị của các dữ liệu thêm mới đã được kiểm tra hợp lệ so với các ràng buộc toàn vẹn dữ liệu thì các dữ liệu này sẽ được cập nhật tăng giá trị tại một cột nào đó của các bảng liên quan.
  • Ảnh minh họa
    Trigger của sự kiện này sẽ tự động kích hoạt khi dữ liệu trong bảng bị sửa đổi. Thông thường bên trong trigger sẽ có một số các kiểm tra ràng buộc toàn vẹn dữ liệu như là : kiểm tra ràng buộc toàn vẹn dữ liệu khóa ngoại, miền giá trị, liên thuộc tính trong cùng một bảng dữ liệu, liên thuộc tính của nhiều bảng dữ liệu khác nhau.
  • Ảnh minh họa
    Khái niệm trigger lồng nhau hoàn toàn giống khái niệm thủ tục lồng nhau. Bản thân bên trong trigger, chúng ta được phép gọi thực hiện các lệnh INSERT, UPDATE, DELETE để cập nhật dữ liệu của các bảng khác.
  • Ảnh minh họa
    Trên thực tế, trong bối cảnh người sử dụng chương trình là người Việt Nam, các câu thông báo sử dụng trong chương trình phải là ngôn ngữ tiếng Việt và sao cho phải thích hợp với đối tượng sử dụng chương trình, do vậy khi xây dựng các kiểm tra ràng buộc dữ liệu bạn buộc phải sử dụng trigger với câu lệnh RAISERROR.
  • Ảnh minh họa
    Trên thực tế, trong bối cảnh người sử dụng chương trình là người Việt Nam, các câu thông báo sử dụng trong chương trình phải là ngôn ngữ tiếng Việt và sao cho phải thích hợp với đối tượng sử dụng chương trình, do vậy khi xây dựng các kiểm tra ràng buộc dữ liệu bạn buộc phải sử dụng trigger với câu lệnh RAISERROR.
  • Ảnh minh họa
    Khi có thao tác Insert, Update hoặc Delete xảy ra trên table, các thao tác này sẽ kích hoạt trigger, biến cố tạo ra một hoặc nhiều table giả. Các table này có thể xem như là các sổ ghi nhận giao tác (transaction logs) của biến cố. Có hai loại : table Inserted và Deleted.
  • Ảnh minh họa
    Trên thực tế đôi khi bạn cần sửa đổi tên của trigger, trong trường hợp này, bạn có thể sử dụng một thủ tục do SQL Server cung cấp sẳn có tên là sp_rename.
Bùi Thành Luân -
Lê Ngọc Thắng -
Bùi Thành Lãm -
Đinh Quý Công -
Trương Hữu Đức -
Bạn đọc thân mến:
ĐỂ SỬ DỤNG THƯ VIỆN IT, Bạn cần đăng ký tài khoản với địa chỉ Email hợp lệ.
ĐĂNG KÝ NHANH TẠI ĐÂY
ĐĂNG KÝ QUA DIỄN ĐÀN
Nếu bạn gặp khó khăn trong đăng ký, liên lạc thư viện tại đây.
Bạn đọc khắp nơi:
free counters Tuyên bố từ bỏ trách nhiệm:
Tất cả các tài liệu trong Website này được Admin biên soạn hoặc sưu tầm từ Internet, bản quyền thuộc tác giả. Thư viện IT chỉ lưu trữ để học tập và tham khảo. Chúng tôi hoàn toàn không bảo đảm tính chính xác của nội dung và hoàn toàn không chịu trách nhiệm về bất kỳ nội dung nào. Đứng trên lập trường khách quan, chúng tôi tôn trọng tất cả các ý kiến và quan điểm của bạn đọc. Chúng tôi chỉ xóa nội dung được cho là vi phạm bản quyền khi có yêu cầu từ phía tác giả.