Trigger là gì?

Trigger Schmitt

Ít nhất một lần khi thao tác trên máy tính bạn sẽ gặp gỡ với thuật ngữ Trigger. Vậy Trigger là gì? Ưu nhược điểm của nó ra sao? Mời bạn cùng khám phá trong bài viết dưới đây.

Trigger là gì?

Trigger là một hoặc một tập các câu lệnh SQL được lưu trữ trong CSDL và sẽ được kích hoạt bởi sự kiện mà nó theo dõi trên bảng dữ liệu. Sự kiện đó gắn liền với thao tác INSERT, UPDATE hay DELETE. Đôi

Trigger hoàn toàn không có tham số nên không thể gọi thực hiện trực tiếp Trigger bằng lệnh EXECUTE như Strore Procedure hoặc bằng bấy kỳ một lệnh nào khác mà thực hiện một cách tự động.

Trigger được lưu trữ và quản lý trong Server Database, được dùng trong trường hợp ta muốn kiểm tra các ràng buộc toàn vẹn trong Database. Chính nhờ vào tính năng đặc biệt là tự động thực hiện mà nội dung các lệnh bên trong trigger thường được dùng cho các công việc sau:

  • Kiểm tra các ràng buộc toàn vẹn dữ liệu phức tạp.
  • Thực hiện các xử lý được thiết kế thi hành tại server (trong mô hình client/server).
  • Các xử lý mà ta muốn chúng sẽ được tự động thực hiện khi có thao tác INSERT, UPDATE hay DELETE xảy ra.
  • Trigger cũng được dùng để thay thế các constrain trong trường hợp ta muốn kiểm tra ràng buộc dữ liệu kèm theo cá câu thông báo thích hợp theo ý muốn người dùng.

Vậy ưu điểm của Trigger là gì?

Sau khi tìm hiểu về khái niệm của thuật ngữ trên thì điều người dùng quan tâm ngay sau đó chính là ưu điểm của Trigger là gì?

Ưu điểm của Trigger là nó có thể bắt lỗi logic ở mức cơ sở dữ liệu, có thể dùng trigger là một cách khác để thay thế việc thực hiện những công việc hẹn giờ theo lịch. Trigger rất hiệu quả khi sử dụng để kiểm soát những thay đổi của dữ liệu trong bảng. Hiện nay, Trigger được ứng dụng nhiều và giúp ích cho người dùng ở nhiều công việc.

Bên những ưu điểm vượt trội như trên, trigger cũng có một số điểm hạn chế như nó 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 thể thay thế hoàn toàn được công việc này. Trigger hoạt động ngầm trong csdl, không hiển thị ở tầng giao diện. Do đó, khó chỉ ra được điều gì xảy ra ở tầng csdl. Trigger thực hiện các update lên bảng dữ liệu vì thế nó làm tăng lượng công việc lên csdl và làm cho hệ thống chạy chậm.

Cú pháp để tạo một trigger cơ bản:

  1. CREATE TRIGGER trigger_name
  2. {FOR | AFTER | INSTEAD OF }
  3. {INSERT |UPDATE |DELETE} — Các biến cố tự động kích hoạt Trigger
  4. ON {table |view} — Chỉ định bảng hoặc view sử dụng Trigger
  5. FOR EACH ROW sql–code

Khi thực hiện một Trigger thì SQL tự động tạo ra 2 bảng Inserted và Deleted trong bộ nhớ chính và cục bộ cho mỗi Trigger, có nghĩa là khi áp dụng Trigger trên bảng nào thì bảng Inserted và Deleted sẽ được sử dụng riêng cho đó bảng đó.

Cú pháp để tạo một trigger cơ bản
Cú pháp để tạo một trigger cơ bản

Trigger Schmitt là gì?

Một trong những thuật ngữ liên quan đến, Trigger là Trigger Schmitt. Vậy Trigger Schmitt là gì?

Theo Wikipedia, Trigger Schmitt là mạch tích hợp có các kết nối trong để tạo ra mạch so sánh có trễ. Quá trình truyền tín hiệu, đặc biệt là tín hiệu số, bị ảnh hưởng của hai hiện tượng: Nhiễu thâm nhập, sườn xung bị giảm độ dốc.

Trong khi đó mạch nhận tiếp nhận tín hiệu Vin thực hiện phân biệt tín hiệu bằng ngưỡng điện áp VT nào đó để quyết định ngõ ra Vout là cao hay thấp. Sự bất định xảy ra khi nhiễu thâm nhập đúng vào lúc điện áp ở sườn xung xấp xỉ với ngưỡng phân biệt mức logic VT.

Trigger Schmitt có mặt gần như trong tất cả các ngõ vào tiếp nhận tín hiệu logic truyền đến qua cáp nối của các thiết bị. Mạch tích hợp này loại trừ các nhiễu xâm nhập vào đường truyền. Độ rộng dải ngưỡng so được chọn theo thỏa hiệp giữa nhịp làm việc (tức tần số cao nhất) và mức chống nhiễu. Nếu đường truyền đi qua vùng nhiễu cao thì phải có các biện pháp khác hỗ trợ, như giảm trở kháng ra của mạch phát, tăng mức điện áp logic, bọc kim dây truyền dẫn,…

Trigger Schmitt
Trigger Schmitt

Mở rộng ràng buộc toàn vẹn dữ liệu với các trigger:

Khi sử dụng trigger có 3 thao tác cơ bản làm thay đổi dữ liệu trên các bảng của cơ sở dữ liệu đó là thao tác thêm (insert), sửa (update) và xóa (delete).

Khi bạn muốn đảm bảo dữ liệu nhất quán và đúng đắn thì bạn cần kiểm tra việc thực hiện của 3 thao tác trên.

Bạn kiểm tra theo 2 cách sau: Kiểm tra mức giao diện và kiểm tra mức cơ sở dữ liệu.
– Kiểm tra mức giao diện: công việc này chính là công việc lập trình trên các màn hình giao diện.

– Kiểm tra mức cơ sở dữ liệu: công việc này thực hiện bởi các đối tượng constraint hoặc trigger.
Đối với các ràng buộc toàn vẹn dữ liệu đơn giản như kiểm tra các ràng buộc miền giá trị, kiểm tra các ràng buộc giữa các thuộc tính trên cùng một bảng dữ liệu,… ta nên sử dụng đối tượng constraint.

Đối với các ràng buộc toàn vẹn dữ liệu phức tạp khác – là những quy tắc được định nghĩa dùng để kiểm tra tính toàn vẹn của dữ liệu trên nhiều cột hoặc nhiều dòng của các bảng khác nhau. Khi đó bắt buộc chúng ta phải sử dụng đối tượng trigger, đối tượng này cho phép chúng ta xây dựng các câu lệnh bên trong nó với mục tiêu là các câu lệnh này sẽ được thực hiện khi các thao tác làm thay đổi dữ liệu xảy ra trên bảng dữ liệu mà nó gắn vào.
Một trigger gắn với duy nhất một đối tượng table hoặc một đối tượng view.

Các dạng ràng buộc toàn vẹn dữ liệu nên dùng Trigger:

Trên SQL Server, có 2 cách thực hiện ràng buộc toàn vẹn dữ liệu:

SQL Server
SQL Server

– Ràng buộc toàn vẹn dữ liệu bằng phương pháp mô tả (declarative data integrity).
Thực hiện ràng buộc dữ liệu theo phương pháp này chính là các công việc xác định ràng buộc khóa chính, khóa ngoại, kiểm tra miền giá trị, … và mô tả chúng tại thời điểm tạo table.
Đặc điểm cần biết của phương pháp này là việc kiểm tra sẽ được thực hiện trước khi cho phép ghi vào table.

– Ràng buộc toàn vẹn dữ liệu bằng phương pháp theo thủ tục (procedural data integrity).
Trong phương pháp này, việc ràng buộc toàn vẹn dữ liệu được xác định bởi tập hợp các câu lệnh T-SQL. Các câu lệnh chứa bên trong đối tượng Trigger, chúng sẽ được gọi thi hành khi có thao tác thêm, xóa, hoặc sửa dữ liệu xảy ra trên table tương ứng.
Đặc điểm cần biết của phương pháp này là việc kiểm tra sẽ được thực hiện sau khi dữ liệu được ghi vào table.

Hy vọng với những thông tin trên bạn đọc sẽ hiểu Trigger là gì và những vấn đề liên quan đến thuật ngữ này. Từ đó có thể áp dụng một cách tốt nhất vào công việc của mình.

Chúc bạn thành công!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *