Trình kích hoạt MySQL TRƯỚC KHI CHÈN điều kiện NẾU
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 Show
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 đ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 3 và 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ụngSự kiện kích hoạtOLDNEWINSERTKhôngCóCẬP NHẬTCóCóXÓACóKhôngKiể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 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ị 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ó 6data mà chúng tôi muốn cập nhật lên 5dataCuối cùng, khi xóa một hàng dữ liệu, công cụ sửa đổi 6 sẽ truy cập giá trị đã xóa. 5không tồn tại vì không có gì thay thế giá trị cũ khi xóaVí dụ kích hoạt MySQLNhư 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 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 MySQLMỗ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. 1 hoặc 2 một sự kiện hàng cụ thể2. Biến cố. 3, 4 hoặc 5Kí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ạtSử dụng cú pháp câu lệnh 6 để tạo trình kích hoạt mới 4 7Ví 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 6Ngoài ra, một thực tế phổ biến là sử dụng định dạng sau 7
Tên kích hoạt chèn trước cho nhân viên bảng trông như thế này
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ăngXóa Trình kích hoạtĐể xóa trình kích hoạt, hãy sử dụng câu lệnh 9________số 8Ngoài ra, sử dụng 2Thô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ẫuTạ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 3Chèn dữ liệu mẫu vào bảng 4Chọn bảng để xem kết quả 52. Tạo một bảng có tên là average_age với một cột có tên là average 6Chèn giá trị tuổi trung bình vào bảng 60Chọn bảng để xem kết quả 613. 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 62Tạo Trình kích hoạt TRƯỚC KHI CHÈNĐể tạo trình kích hoạt 20, hãy sử dụng 63
Trình kích hoạt 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 20 cung cấp thêm các giới hạn giá trị trước khi nhập dữ liệu mớiTRƯỚC KHI CHÈN Ví dụ kích hoạt Tạo trình kích hoạt 20 để kiểm tra giá trị tuổi trước khi chèn dữ liệu vào bảng người 64Chè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 65Bả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ÈNTạo trình kích hoạt 25 với 66
Trình kích hoạt 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ácSAU 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 25 trên bảng người để cập nhật bảng average_age sau khi chèn 67Chèn một hàng mới vào bảng người sẽ kích hoạt trình kích hoạt 68Dữ 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 29 với 69
Trình kích hoạt ________ 229 đi cùng với trình kích hoạt ________ 220. 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 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ỗiThêm trình kích hoạt 29 vào bảng người có cùng phần thân với trình kích hoạt 20 70Cập nhật một giá trị hiện có sẽ kích hoạt kiểm tra trình kích hoạt 71Cậ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 36 72
Trình kích hoạt 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ệuSAU 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 36 để cập nhật bảng average_age sau khi cập nhật một hàng trong bảng người 73Cập nhật dữ liệu hiện có thay đổi giá trị trong bảng người 74Cậ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 40, hãy sử dụng 75
Trình kích hoạt 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óaTRƯỚ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 40 trên bảng person và chèn các giá trị vào bảng person_archive 76Xó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 77Chè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 78Trình kích hoạt 40 rất hữu ích để ghi lại bất kỳ nỗ lực thay đổi bảng nàoTạo Trình kích hoạt SAU KHI XÓATạo trình kích hoạt 45 với 79
Trình kích hoạt 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ậtSAU KHI DELETE Ví dụ kích hoạt Tạo trình kích hoạt 45 trên người trong bàn để cập nhật bảng average_age với thông tin mới 0Xó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 Không có trình kích hoạt 45, thông tin không tự động cập nhậtTạo nhiều trình kích hoạtMySQL 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 hoạt động logic vào cùng một trình kích hoạt. Sử dụng các dấu phân cách 50 và 51 để biểu thị phần kích hoạt 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ạtLiệt kê tất cả các trình kích hoạt trong cơ sở dữ liệu với 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 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 Làm cách nào để đặt điều kiện trong trình kích hoạt trong SQL?Điều kiện WHEN có thể được sử dụng trong trình kích hoạt SQL để chỉ định điều kiện . Nếu điều kiện đánh giá là đúng, các câu lệnh SQL trong phần thân thường trình kích hoạt SQL sẽ được chạy. Nếu điều kiện được đánh giá là sai, các câu lệnh SQL trong phần thân quy trình kích hoạt SQL sẽ không chạy và quyền điều khiển được trả về hệ thống cơ sở dữ liệu.
Có thể tạo trình kích hoạt sau trước hoặc sau trình kích hoạt cập nhật cho mỗi hàng không?Có thể chỉ định một giá trị cột mới trong trình kích hoạt hàng TRƯỚC, nhưng không phải trong trình kích hoạt hàng SAU (vì câu lệnh kích hoạt có hiệu lực trước khi trình kích hoạt hàng SAU được kích hoạt). Nếu trình kích hoạt hàng TRƯỚC thay đổi giá trị của hàng mới.
Khi nào nên sử dụng trình kích hoạt trước và sau trong MySQL?Thông thường, việc sử dụng Trigger Before là để thực hiện xác thực trước khi chấp nhận dữ liệu vào bảng và để kiểm tra các giá trị trước khi xóa chúng khỏi bảng. Nhưng thông thường, việc sử dụng After trigger là để cập nhật dữ liệu trong bảng do có sự thay đổi xảy ra |