Trigger và cách sử dụng

Trigger là gì?

Về bản chất, trigger là một đối tượng của SQL Server, giống như stored procedures hoặc function nhưng điểm KHÁC là trigger được tự động thực hiện mỗi khi có các thao tác dữ liệu trên bảng hoặc đối tượng mà chúng ta cài đặt Trigger.

Trigger sử dụng vào mục đích gì?

Khi nói đến ràng buộc dữ liệu (constraints), chúng ta thường được đề cập các loại ràng buộc sau:

  • Primary key – Khóa chính
  • Foreign key – khóa ngoại
  • Unique key – duy nhất (không trùng lặp giá trị)
  • Not null – không được phép để rỗng
  • Default – giá trị mặc định
  • Check – ràng buộc kiểm tra
  • Trigger – trigger

Với các ràng buộc dữ liệu phức tạp, không cài đặt được với các loại ràng buộc trên, chúng ta sử dụng loại ràng buộc này – trigger.

Bên cạnh đó, trigger còn được dùng tự động lưu nhật ký các thao tác dữ liệu xảy ra. Ví dụ, khi giao dịch ngân hàng, một phát sinh giao dịch xảy ra có thể lưu nhật ký TỰ ĐỘNG bằng trigger thực hiện một cách đơn giản.

Bảng Inserted, deleted

Khi trigger xảy ra, SQL Server sử dụng 2 bảng này để phục vụ cho công việc mà trigger đảm trách, chức năng của từng bảng như sau

Thao tác dữ liệu Inserted Deleted
INSERT Dữ liệu thêm mới được lưu vào bảng này Không sử dụng
DELETE Không sử dụng Dữ liệu sẽ xóa được lưu vào bảng này
UPDATE Dữ liệu mới sẽ thay đổi Dữ liệu cũ trước khi thay đổi

Cú pháp

CREATE TRIGGER Trigger_name
ON table_name
FOR [DELETE, INSERT, UPDATE]
AS

Sql_statements

Giải thích

Trigger có tên Trigger_name được tạo ra trên bảng table_name và trigger được gọi (chạy) khi có thao tác DELETE, INSERT, UPDATE trên bảng đó

Ví dụ 1

CREATE TRIGGER CheckDiscountUpd

ON Products

FOR UPDATE AS

IF (SELECT discount FROM inserted) > (select max(Maxdisc) from discounts)

BEGIN

PRINT ‘You cannot assign a discount greater than max allowed discount’

ROLLBACK TRANSACTION

END

Giải thích ví dụ

Giả sử ràng, bảng Products có trường discount, khi cập nhật giá trị discount thì hệ thống kiểm tra xem giá trị discount có nằm trong phạm vi cho phép hay không? Nếu vượt quá thì hủy việc thay đổi đó.

Ví dụ 2: bạn không được phép thay đổi giá trị của trường payments trong bảng sales

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

Bài tiếp theo sẽ giải thích loại ràng buộc phức tạp không thiết lập được bằng các loại ràng buộc khác mà phải sử dụng ràng buộc loại này – Trigger

One thought on “Trigger và cách sử dụng

  1. Pingback: Sử dụng trigger (2) | GÓC LẬP TRÌNH.NET

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s