Trình kích hoạt MySQL là gì?

Các cột trong MySQL áp dụng một số giới hạn giá trị nhỏ. Ví dụ: đặt kiểu dữ liệu cột là tiny int và không null yêu cầu đầu vào giá trị số nhỏ. Tuy nhiên, cần có nhiều hạn chế hơn để duy trì tính toàn vẹn của dữ liệu

Hướng dẫn này chỉ cho bạn cách sử dụng trình kích hoạt MySQL và cung cấp các ví dụ cho từng loại trình kích hoạt

How To Use MySQL Triggers

điều kiện tiên quyết

Trình kích hoạt trong MySQL là gì?

Trình kích hoạt là một đối tượng MySQL được đặt tên kích hoạt khi một sự kiện xảy ra trong bảng. Kích hoạt là một loại thủ tục được lưu trữ cụ thể được liên kết với một bảng cụ thể

Trình kích hoạt cho phép truy cập vào các giá trị từ bảng nhằm mục đích so sánh bằng cách sử dụng

employee_bi
3 và
employee_bi
4. Tính khả dụng của các công cụ sửa đổi tùy thuộc vào sự kiện kích hoạt mà bạn sử dụng

Sự kiện kích hoạtOLDNEWINSERTKhôngCóCẬP NHẬTCóCóXÓACóKhông

Kiểm tra hoặc sửa đổi một giá trị khi cố gắng chèn dữ liệu làm cho công cụ sửa đổi

employee_bi
5 khả dụng. Điều này là do một bảng được cập nhật với nội dung mới. Ngược lại, giá trị
employee_bi
6 không tồn tại cho câu lệnh chèn vì không có thông tin nào tồn tại ở vị trí của nó trước đó

Khi cập nhật một hàng của bảng, cả hai công cụ sửa đổi đều khả dụng. Có

employee_bi
6data mà chúng tôi muốn cập nhật lên
employee_bi
5data

Cuối cùng, khi xóa một hàng dữ liệu, công cụ sửa đổi

employee_bi
6 sẽ truy cập giá trị đã xóa.
employee_bi
5không tồn tại vì không có gì thay thế giá trị cũ khi xóa

Ví dụ kích hoạt MySQL

Như một ví dụ về trình kích hoạt được áp dụng, việc chèn các giá trị mới vào bảng person sẽ mang lại kết quả khác với đầu vào ban đầu

Inserting into a database with a trigger

Lưu ý tên được chèn ban đầu là chữ thường. Khi chọn bảng, chữ cái đầu tiên hiển thị là viết hoa. Mặc dù không có dấu hiệu nào khác với câu lệnh chèn thông thường, trình kích hoạt được kích hoạt trước câu lệnh chèn để viết hoa chữ cái đầu tiên của tên

Sử dụng trình kích hoạt MySQL

Mỗi trình kích hoạt được liên kết với một bảng có một tên và chức năng duy nhất dựa trên hai yếu tố

1. Thời gian.

DROP TRIGGER ;
1 hoặc
DROP TRIGGER ;
2 một sự kiện hàng cụ thể

2. Biến cố.

DROP TRIGGER ;
3,
DROP TRIGGER ;
4 hoặc
DROP TRIGGER ;
5

MySQL Triggers

Kích hoạt MySQL kích hoạt tùy thuộc vào thời gian kích hoạt và sự kiện trong tổng số sáu kết hợp kích hoạt duy nhất. Các câu lệnh trước giúp kiểm tra dữ liệu và thực hiện các thay đổi trước khi thực hiện các cam kết, trong khi các câu lệnh sau cam kết dữ liệu trước rồi mới thực hiện các câu lệnh

Việc thực hiện một tập hợp các hành động diễn ra tự động, ảnh hưởng đến tất cả các hàng được chèn, xóa hoặc cập nhật trong câu lệnh

Tạo trình kích hoạt

Sử dụng cú pháp câu lệnh

DROP TRIGGER ;
6 để tạo trình kích hoạt mới

employee_bi
4
DROP TRIGGER ;
7

Ví dụ: nếu trình kích hoạt kích hoạt trước khi chèn vào bảng có tên nhân viên, quy ước tốt nhất là gọi trình kích hoạt

employee_bi
6

Ngoài ra, một thực tế phổ biến là sử dụng định dạng sau

employee_bi
7

Tên kích hoạt chèn trước cho nhân viên bảng trông như thế này

employee_bi

Trình kích hoạt thực thi tại một thời điểm cụ thể của một sự kiện trên bảng được xác định bởi

cho mỗi hàng bị ảnh hưởng bởi chức năng

Xóa Trình kích hoạt

Để xóa trình kích hoạt, hãy sử dụng câu lệnh

DROP TRIGGER ;
9

________số 8

Drop trigger command output

Ngoài ra, sử dụng

employee_bi
2

Drop trigger error message output

Thông báo lỗi không hiển thị vì không có trình kích hoạt, vì vậy không có cảnh báo nào được in

Tạo cơ sở dữ liệu mẫu

Tạo cơ sở dữ liệu cho mã ví dụ kích hoạt với cấu trúc sau

1. Tạo một bảng được gọi là người có tên và tuổi cho các cột

employee_bi
3

Chèn dữ liệu mẫu vào bảng

employee_bi
4

Chọn bảng để xem kết quả

employee_bi
5

Create table person

2. Tạo một bảng có tên là average_age với một cột có tên là average

employee_bi
6

Chèn giá trị tuổi trung bình vào bảng

employee_bi
60

Chọn bảng để xem kết quả

employee_bi
61

Create table average_age

3. Tạo một bảng có tên person_archive với các cột tên, tuổi và thời gian

employee_bi
62

Create table person_archive

Tạo Trình kích hoạt TRƯỚC KHI CHÈN

Để tạo trình kích hoạt

employee_bi
20, hãy sử dụng

employee_bi
63

Trình kích hoạt

employee_bi
20 cho phép kiểm soát sửa đổi dữ liệu trước khi đưa vào bảng cơ sở dữ liệu. Viết hoa tên cho nhất quán, kiểm tra độ dài của đầu vào hoặc phát hiện đầu vào bị lỗi bằng trình kích hoạt
employee_bi
20 cung cấp thêm các giới hạn giá trị trước khi nhập dữ liệu mới

TRƯỚC KHI CHÈN Ví dụ kích hoạt

Tạo trình kích hoạt

employee_bi
20 để kiểm tra giá trị tuổi trước khi chèn dữ liệu vào bảng người

employee_bi
64

Create before insert trigger

Chèn dữ liệu sẽ kích hoạt trình kích hoạt và kiểm tra giá trị của tuổi trước khi xác nhận thông tin

employee_bi
65

Before insert trigger result

Bảng điều khiển hiển thị thông báo lỗi mô tả. Dữ liệu không chèn vào bảng do kiểm tra trình kích hoạt không thành công

Tạo Trình kích hoạt SAU KHI CHÈN

Tạo trình kích hoạt

employee_bi
25 với

employee_bi
66

Trình kích hoạt

employee_bi
25 hữu ích khi hàng đã nhập tạo ra một giá trị cần thiết để cập nhật một bảng khác

SAU KHI CHÈN Ví dụ kích hoạt

Chèn một hàng mới vào bảng người không tự động cập nhật giá trị trung bình trong bảng average_age. Tạo trình kích hoạt

employee_bi
25 trên bảng người để cập nhật bảng average_age sau khi chèn

employee_bi
67

create after insert trigger

Chèn một hàng mới vào bảng người sẽ kích hoạt trình kích hoạt

employee_bi
68

After insert trigger results

Dữ liệu được chuyển thành công vào bảng người và cập nhật bảng average_age với giá trị trung bình chính xác

Tạo trình kích hoạt

employee_bi
29 với

employee_bi
69

Trình kích hoạt

employee_bi
29 đi cùng với trình kích hoạt
employee_bi
20. Nếu có bất kỳ giới hạn nào tồn tại trước khi chèn dữ liệu, thì các giới hạn đó cũng phải có trước khi cập nhật

TRƯỚC KHI CẬP NHẬT Ví dụ về kích hoạt

Nếu có giới hạn độ tuổi cho bảng người trước khi chèn dữ liệu, giới hạn độ tuổi cũng phải tồn tại trước khi cập nhật thông tin. Không có trình kích hoạt

employee_bi
29, trình kích hoạt kiểm tra độ tuổi rất dễ tránh. Không có gì hạn chế chỉnh sửa đối với một giá trị bị lỗi

Thêm trình kích hoạt

employee_bi
29 vào bảng người có cùng phần thân với trình kích hoạt
employee_bi
20

employee_bi
70

Create before update trigger

Cập nhật một giá trị hiện có sẽ kích hoạt kiểm tra trình kích hoạt

employee_bi
71

before update trigger results

Cập nhật tuổi thành giá trị nhỏ hơn 18 sẽ hiển thị thông báo lỗi và thông tin không cập nhật

Sử dụng khối mã sau để tạo trình kích hoạt

employee_bi
36

employee_bi
72

Trình kích hoạt

employee_bi
36 giúp theo dõi các thay đổi đã cam kết đối với dữ liệu. Thông thường, mọi thay đổi sau khi chèn thông tin cũng xảy ra sau khi cập nhật dữ liệu

SAU KHI CẬP NHẬT Ví dụ về kích hoạt

Bất kỳ cập nhật thành công nào đối với dữ liệu tuổi trong bảng, mọi người cũng nên cập nhật giá trị trung bình trung bình được tính trong bảng average_age

Tạo trình kích hoạt

employee_bi
36 để cập nhật bảng average_age sau khi cập nhật một hàng trong bảng người

employee_bi
73

Create after update trigger

Cập nhật dữ liệu hiện có thay đổi giá trị trong bảng người

employee_bi
74

After update trigger results

Cập nhật bảng person cũng cập nhật giá trị trung bình trong bảng average_age

Tạo Trình kích hoạt TRƯỚC KHI XÓA

Để tạo trình kích hoạt

employee_bi
40, hãy sử dụng

employee_bi
75

Trình kích hoạt

employee_bi
40 rất cần thiết vì lý do bảo mật. Nếu một bảng cha có bất kỳ bảng con nào được đính kèm, trình kích hoạt sẽ giúp chặn việc xóa và ngăn các bảng mồ côi. Trình kích hoạt cũng cho phép lưu trữ dữ liệu trước khi xóa

TRƯỚC KHI XÓA Ví dụ kích hoạt

Lưu trữ dữ liệu đã xóa bằng cách tạo trình kích hoạt

employee_bi
40 trên bảng person và chèn các giá trị vào bảng person_archive

employee_bi
76

Create before delete trigger

Xóa dữ liệu khỏi bảng person lưu trữ dữ liệu vào bảng person_archive trước khi xóa

employee_bi
77

before delete trigger result

Chèn lại giá trị vào bảng người sẽ giữ nhật ký của dữ liệu đã xóa trong bảng người_archive

employee_bi
78

person_archive unchanged after insert

Trình kích hoạt

employee_bi
40 rất hữu ích để ghi lại bất kỳ nỗ lực thay đổi bảng nào

Tạo Trình kích hoạt SAU KHI XÓA

Tạo trình kích hoạt

employee_bi
45 với

employee_bi
79

Trình kích hoạt

employee_bi
45 duy trì cập nhật thông tin yêu cầu hàng dữ liệu biến mất trước khi thực hiện cập nhật

SAU KHI DELETE Ví dụ kích hoạt

Tạo trình kích hoạt

employee_bi
45 trên người trong bàn để cập nhật bảng average_age với thông tin mới

employee_bi
0

Create after delete trigger

Xóa một bản ghi khỏi bảng, người đó cập nhật bảng average_age với mức trung bình mới

After delete trigger results

Không có trình kích hoạt

employee_bi
45, thông tin không tự động cập nhật

Tạo nhiều trình kích hoạt

MySQL không hỗ trợ kích hoạt nhiều trình kích hoạt cùng một lúc. Tuy nhiên, có thể thêm nhiều thao tác logic vào cùng một trình kích hoạt. Sử dụng các dấu phân cách

employee_bi
50 và
employee_bi
51 để biểu thị phần kích hoạt

employee_bi
1

Đảm bảo thay đổi dấu phân cách mặc định trước khi tạo trình kích hoạt có nhiều thao tác

Hiển thị Trình kích hoạt

Liệt kê tất cả các trình kích hoạt trong cơ sở dữ liệu với

employee_bi
2

Đầu ra hiển thị danh sách tất cả các trình kích hoạt, bao gồm tên và nội dung câu lệnh

Output of show triggers

Các thông tin khác cũng hiển thị, chẳng hạn như thời gian tạo và người dùng đã tạo trình kích hoạt

Phần kết luận

Trình kích hoạt MySQL cung cấp thêm xác thực và kiểm soát dữ liệu trước hoặc sau khi các sự kiện cụ thể xảy ra. Cho dù bạn đang cố gắng ngăn lỗi hoặc thêm các hạn chế để đảm bảo tính nhất quán, trình kích hoạt sẽ giúp kiểm soát việc nhập, cập nhật và xóa dữ liệu

Hãy nhớ rằng việc kiểm tra trình kích hoạt diễn ra theo hàng, điều này khiến hiệu suất bị chậm lại với các truy vấn lớn. Để biết thêm tài liệu về chủ đề này, hãy xem bài viết của chúng tôi về cách cải thiện hiệu suất MySQL bằng cách điều chỉnh

Các loại trình kích hoạt khác nhau trong MySQL là gì?

Trình kích hoạt MySQL là một chương trình được lưu trữ (có các truy vấn) được thực thi tự động để phản hồi một sự kiện cụ thể như chèn, cập nhật hoặc xóa xảy ra trong một bảng. .
Trước khi kích hoạt cập nhật. .
Sau khi kích hoạt cập nhật. .
Trước khi Chèn Trigger. .
Sau khi chèn kích hoạt

Tại sao nên sử dụng trình kích hoạt MySQL?

Ưu điểm của trình kích hoạt . Trình kích hoạt cung cấp một cách thay thế để chạy các tác vụ theo lịch trình. Bằng cách sử dụng trình kích hoạt, bạn không phải đợi các sự kiện đã lên lịch chạy vì trình kích hoạt được gọi tự động trước hoặc sau khi thực hiện thay đổi đối với dữ liệu trong bảng. handle errors from the database layer. Triggers give an alternative way to run scheduled tasks. By using triggers, you don't have to wait for the scheduled events to run because the triggers are invoked automatically before or after a change is made to the data in a table.

Bốn loại kích hoạt là gì?

Trong SQL Server, chúng tôi có thể tạo bốn loại trình kích hoạt Trình kích hoạt Ngôn ngữ Định nghĩa Dữ liệu (DDL), trình kích hoạt Ngôn ngữ Thao tác Dữ liệu (DML), trình kích hoạt CLR và trình kích hoạt Đăng nhập.

Mục đích của trigger là gì?

Vì trình kích hoạt nằm trong cơ sở dữ liệu và bất kỳ ai có đặc quyền được yêu cầu đều có thể sử dụng trình kích hoạt đó nên trình kích hoạt cho phép bạn viết một tập hợp các câu lệnh SQL mà nhiều ứng dụng có thể sử dụng. It lets you avoid redundant code when multiple programs need to perform the same database operation.