SQL Server: Cơ bản về Trigger

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Giới thiệu

Trigger là một thủ tục lưu trữ được thực hiện khi có một nỗ lực để sửa đổi dữ liệu trong bảng được bảo vệ bằng trigger. Không giống như các thủ tục lưu trữ hệ thống tiêu chuẩn, ta không thể thực thi các trigger trực tiếp, chúng cũng không truyền hoặc nhận các tham số. Trigger được định nghĩa trên các bảng cụ thể và những bảng này được gọi là bảng trigger.

Nếu trigger được định nghĩa trên hành động INSERT, UPDATE hoặc DELETE trên một bảng, thì nó sẽ tự hủy khi những hành động này được thực thi. Sự thực thi tự động này của trigger không thể bị phá vỡ. Trong SQL Server, trigger được tạo ra bằng cách sử dụng câu lệnh CREATE TRIGGER. Hình dưới đây thể hiện ví dụ về trigger.

sql: giới thiệu trigger

Cách dùng trigger

Trigger có thể chứa logic xử lý phức tạp và thường được sử dụng để duy trì tính toàn vẹn dữ liệu. Dưới đây là một số cách dùng trigger có thể được phân loại như sau:

Phân tầng thay đổi thông qua các bảng liên quan

Người dùng có thể sử dụng một trigger cho các thay đổi tầng thông qua các bảng liên quan. Ví dụ, ta có bảng Salary_Details có khóa ngoại (FOREIGN KEY) nằm trên cột EmpID và tham chiếu tới khóa chính (PRIMARY KEY) là EmpID của bảng Employee_Details. Nếu sự kiện cập nhật hoặc xóa xảy ra trong bảng Employee_Details, thì trigger UPDATE hoặc DELETE có thể được định nghĩa để xếp tầng những thay đổi đối với bảng Salary_Details.

Thực thi toàn vẹn dữ liệu phức tạp hơn ràng buộc CHECK

Không giống như các hạn chế CHECK, trigger có thể tham khảo các cột trong các bảng khác. Tính năng này có thể được sử dụng để áp dụng các kiểm tra tính toàn vẹn dữ liệu phức tạp. Tính toàn vẹn dữ liệu có thể được thực thi bằng cách:

+ Kiểm tra các ràng buộc trước khi xếp tầng các cập nhật hoặc xóa.

+ Tạo ra các trigger nhiều hàng cho các hành động được thực hiện trên nhiều hàng.

+ Thực thi tính toàn vẹn tham chiếu giữa các cơ sở dữ liệu.

Định nghĩa các thông báo lỗi tùy chỉnh

Các thông báo lỗi tùy chỉnh được sử dụng để cung cấp lời giải thích phù hợp hoặc chi tiết hơn trong các tình huống lỗi nhất định. Có thể sử dụng các trigger để gọi các thông báo lỗi tùy chỉnh được xác định trước như vậy khi các điều kiện lỗi có liên quan xảy ra.

Duy trì dữ liệu không chuẩn hóa

Tính toàn vẹn dữ liệu mức thấp có thể được duy trì trong các môi trường cơ sở dữ liệu không chuẩn hóa sử dụng các trigger. Dữ liệu không chuẩn hóa thường đề cập đến dữ liệu dư thừa hoặc bắt nguồn. Ở đây, các trigger được sử dụng cho các kiểm tra không yêu cầu các so khớp chính xác. Ví dụ, nếu giá trị của năm sẽ được kiểm tra đối với các ngày hoàn tất, trigger có thể được sử dụng để thực hiện kiểm tra.

So sánh các trạng thái trước và sau của dữ liệu đang được sửa đổi

Trigger cung cấp tùy chọn này để tham khảo các thay đổi được thực hiện cho dữ liệu bằng các câu lệnh INSERT, UPDATE và DELETE. Điều này cho phép người dùng tham khảo các hàng bị ảnh hưởng khi các sửa đổi được thực hiện thông qua các trigger.

Phân loại trigger

Trigger có thể được đặt để thực thi tự động một hành động khi một sự kiện ngôn ngữ xảy ra trong một bảng hoặc khung nhìn. Các sự kiện ngôn ngữ có thể được phân loại là các sự kiện DML và các sự kiện DDL. Trigger liên quan đến các sự kiện DML được gọi là trigger DML, trong khi trigger kết hợp với các sự kiện DDL được gọi là trigger DDL.

Trigger trong SQL Server có thể được phân thành ba loại cơ bản:

- Trigger DML

Các trigger DML (Data Manipulation Language) được thực thi khi dữ liệu được chèn, sửa đổi hoặc xóa trong một bảng hoặc khung nhìn sử dụng câu lệnh INSERT, UPDATE hoặc DELETE.

- Trigger DDL

Các trigger DDL (Data Definition Language) được thực thi khi một bảng hoặc khung nhìn được tạo ra, chỉnh sửa hoặc xóa bằng cách sử dụng câu lệnh CREATE, ALTER hoặc DROP.

- Trigger đăng nhập (Logon)

Các trigger đăng nhập sẽ thực thi các thủ tục lưu trữ khi một phiên được thiết lập với một sự kiện LOGON. Những trigger này được gọi sau khi chứng thực đăng nhập được hoàn thành và trước khi phiên thực tế được thiết lập. Các trigger đăng nhập kiểm soát các phiên máy chủ bằng cách hạn chế các thông tin đăng nhập không hợp lệ hoặc hạn chế số lượng phiên.

So sánh trigger DDL và trigger DML

Các trigger DDL và DML có cách sử dụng khác nhau và được thực thi với các sự kiện cơ sở dữ liệu khác nhau. Bảng dưới đây liệt kê ra những khác biệt giữa các trigger DDL và DML.

Trigger DDL Trigger DML
Các trigger DDL thực thi các thủ tục lưu trữ trên câu lệnh CREATE, ALTER và DROP. Các trigger DML thực thi trên các câu lệnh INSERT, UPDATE và DELETE.
Các trigger DDL được sử dụng để kiểm tra và kiểm soát các hoạt động của cơ sở dữ liệu. Các trigger DML được sử dụng để thực thi các quy tắc thương mại khi dữ liệu được sửa đổi trong các bảng hoặc khung nhìn.
Các trigger DDL chỉ hoạt động sau khi bảng hoặc khung nhìn được sửa đổi. Các trigger DML thực thi trong hoặc sau khi dữ liệu được sửa đổi.
Các trigger DDL được định nghĩa ở mức cơ sở dữ liệu hoặc máy chủ. Các trigger DML được định nghĩa ở mức cơ sở dữ liệu.
» Tiếp: Tạo các trigger DML
« Trước: Thủ tục lưu trữ (SP)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!