07/09/2018, 11:01

Làm Quen với Trigger Trong SQL

Trong bài viết này chúng ta sẽ tìm hiểu một cách tổng quan về trigger trong SQL, khi nào trigger được sử dụng và những ưu và nhược điểm của nó. Trước tiên thì bạn cần hiểu được trigger là gì. SQL Trigger Là Gì SQL Trigger là một tập hợp các câu lệnh SQL được lưu trữ trong cơ sở dữ liệu, các ...

Trong bài viết này chúng ta sẽ tìm hiểu một cách tổng quan về trigger trong SQL, khi nào trigger được sử dụng và những ưu và nhược điểm của nó. Trước tiên thì bạn cần hiểu được trigger là gì.

Làm Quen với SQL Trigger

SQL Trigger Là Gì

SQL Trigger là một tập hợp các câu lệnh SQL được lưu trữ trong cơ sở dữ liệu, các câu lệnh này sẽ được chạy khi và chỉ khi một sự kiện nào đó xảy ra trên dữ liệu của bảng cho trước, ví dụ như tạo mới, cập nhật, hoặc xoá record của bảng.

Trong định nghĩa trên, bạn cần nắm vững hai tính chất cơ bản của SQL trigger:

  • Trigger đơn giảm là một tập hợp các câu lệnh SQL
  • Tuy nhiên các câu lệnh này được chạy hay không phụ thuộc vào một sự kiện nào đó được gắn với trigger

Như vậy chúng ta sẽ không chạy các câu lệnh của một SQL trigger một cách thủ công mà chúng sẽ được tự động chạy tại thời điểm diễn ra sự kiện được gắn với trigger. Sự kiện này sẽ được chúng ta khai báo khi tạo SQL trigger.

Nếu bạn từng làm việc với JavaScript thì bạn có thể so sánh SQL trigger giống như một hàm event listener được gắn với một sự kiện nào đó. Như ví dụ phía dưới đây thì clickButtonListener là một hàm event listener và hàm này chỉ được gọi khi người dùng click vào button.

<button onclick="clickButtonListener()">Click me</button>

<script type="text/javascript">
function clickButtonListener (event) {
    alert("Bạn mới vừa click vào một button");
    event.preventDefault();
}
</script>

SQL Trigger Sử Dụng Làm Gì

SQL trigger trở nên đặc biệt hữu dụng đối với các tác vụ như kiểm tra tính hợp lệ (validity), trung thực (integrity) của dữ liệu trước và sau khi khi chèn vào bảng mà không kiểm tra được thông qua các các ràng buộc (constraint) được định nghĩa cho bảng.

Do đó đối với các ràng buộc có logic phức tạp không được hỗ trợ sẵn bởi SQL chúng ta có thể sử dụng SQL trigger. Ví dụ như trong một ứng dụng quản lý môn học sinh viên chúng ta có chức năng nhập khoá học và môn học cho từng khoá để in ra cho sinh viên tham khảo. Với một khoá như ComputerScience-2018 thì không thể thêm vào các môn học như Văn Học hay Luyện Thanh. Việc kiểm tra này thường sẽ không được hỗ trợ sẵn bởi SQL mà chúng ta cần sử dụng trigger.

Ưu và Nhược Điểm Của SQL Trigger

SQL Trigger có những ưu điểm sau:

  • SQL cung cấp một phương pháp bổ sung để có thể kiểm tra tính trung thực của dữ liệu, do đó
  • SQL trigger có thể được sử dụng như một công cụ hứng lỗi (catch error) ứng dụng trên tầng database khi dữ liệu truyền tới không hợp lệ (trước khi chạy câu query để chèn dữ liệu), do đó
  • SQL còn được sử dụng như một công cụ để báo cáo về tính trung thực khi dữ liệu sắp sửa diễn ra sự thay đổi (ví dụ như log lại những thay đổi không hợp lệ để kiểm tra sau).

Ngoài những ưu điểm trên thì SQL trigger cũng có một số nhược điểm như sau:

  • Do SQL trigger được tự động chạy khi một sự kiện nào đó diễn ra thay vì được chạy một cách thủ công, điều này đôi khi gây ra sự nhầm lẫn, khó hiểu khi một số lỗi được văng ra hoặc một số thay đổi được tạo ra mà lập trình viên không biết được chúng được thay đổi ở đâu trong code (thực ra thay đổi ở trên database).
  • SQL trigger có thể tốn tài nguyên server và làm tăng chi phí sử dụng cơ sở dữ liệu.
  • SQL trigger không thể thay thế tất cả các tác vụ kiểm tra tính chúng thực của dữ liệu, một số tác vụ đơn giản cần được thực hiện ở phía client (như sử dụng JavaScript) hoặc trên backend (như PHP, Java hay Python... tuỳ vào việc bạn sử dụng ngôn ngữ backedn nào để phát triển ứng dụng).

Kết Luận

Hy vọng sau khi tham khảo bài viết này bạn đã có được một cái nhìn tổng quan về SQL trigger. Ở các bài viết tiếp theo chúng ta sẽ tìm hiểu cụ thể cách tạo một SQL trigger trên các hệ quản trị dữ liệu khác nhau.

0