Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Trigger trong SQL là gì và cách triển khai chúng như thế nào?

Trình kích hoạt trong SQL là một mã thủ tục được tự động thực thi để đáp ứng các sự kiện nhất định trên một bảng được chỉ định. Điều quan trọng là phải hiểu làm thế nào những mã nhỏ này tạo ra sự khác biệt lớn như vậy trong hiệu suất cơ sở dữ liệu. Trong bài viết này, bạn sẽ học cách triển khai trình kích hoạt cùng với các ví dụ.

Các chủ đề sau sẽ được đề cập trong bài viết này:

  • Trình kích hoạt là gì?
  • Cú pháp và ví dụ
  • Hoạt động trong Trình kích hoạt
  • Thuận lợi và Bất lợi

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

Trình kích hoạt là các mã SQL được tự động thực thi để đáp ứng các sự kiện nhất định trên một bảng cụ thể. Chúng được sử dụng để duy trì tính toàn vẹn của dữ liệu. Một trình kích hoạt trong SQL hoạt động tương tự như một trình kích hoạt trong thế giới thực. Ví dụ, khi bóp cò súng, một viên đạn được bắn ra. Tất cả chúng ta đều biết điều này, nhưng điều này có liên quan như thế nào đến Trigger trong SQL? Để hiểu điều này, chúng ta hãy xem xét một tình huống giả định.

John là nhân viên tiếp thị của một công ty. Khi dữ liệu khách hàng mới được nhập vào cơ sở dữ liệu của công ty, anh ta phải gửi thông điệp chào mừng đến từng khách hàng mới. Nếu đó là một hoặc hai khách hàng, John có thể làm điều đó theo cách thủ công, nhưng nếu số lượng nhiều hơn một nghìn thì sao? Trong trường hợp như vậy, các trình kích hoạt có ích.

Vì vậy, giờ đây John có thể dễ dàng tạo một trình kích hoạt sẽ tự động gửi email chào mừng đến khách hàng mới sau khi dữ liệu của họ được nhập vào cơ sở dữ liệu. Vì vậy, tôi hy vọng bạn đã hiểu rõ về sự ra đời của Trigger trong SQL.

Luôn nhớ rằng không thể có hai trình kích hoạt có thời gian hành động và sự kiện giống nhau cho một bảng. Ví dụ:chúng ta không thể có hai trình kích hoạt TRƯỚC KHI CẬP NHẬT cho một bảng. Nhưng chúng tôi có thể có một CẬP NHẬT TRƯỚC KHI và một CHÈN TRƯỚC kích hoạt hoặc một CẬP NHẬT TRƯỚC KHI và một SAU CẬP NHẬT kích hoạt.

Trước khi chúng ta đi sâu hơn vào các nguyên tắc cơ bản về trình kích hoạt, tôi khuyên bạn nên hiểu các khái niệm về Cơ bản và Chuẩn hóa SQL để bạn nắm rõ hơn về Trình kích hoạt trong SQL.

Cú pháp và Ví dụ

Bây giờ chúng ta hãy xem xét cú pháp của trình kích hoạt.

Create Trigger Trigger_Name
(Before | After)  [ Insert | Update | Delete]
on [Table_Name]
[ for each row | for each column ]
[ trigger_body ]

Bây giờ, hãy để tôi chia nhỏ cú pháp này và giải thích chi tiết từng phần.

  • Tạo Trình kích hoạt
    Hai từ khóa này được sử dụng để chỉ định rằng một khối kích hoạt sẽ được khai báo.
  • Trigger_Name
    Nó chỉ định tên của trình kích hoạt. Tên trình kích hoạt phải là duy nhất và không được lặp lại.
  • ( Trước đây | Sau )
    Điều này chỉ định khi nào trình kích hoạt sẽ được thực thi. Nó cho chúng ta biết thời gian mà trình kích hoạt được bắt đầu, tức là trước hoặc sau sự kiện đang diễn ra.
  • Trước khi kích hoạt được sử dụng để cập nhật hoặc xác thực các giá trị bản ghi trước khi chúng được lưu vào cơ sở dữ liệu.
  • Sau khi kích hoạt được sử dụng để truy cập các giá trị trường được thiết lập bởi hệ thống và để thực hiện các thay đổi trong các bản ghi khác. Các bản ghi kích hoạt kích hoạt sau là chỉ đọc. Chúng tôi không thể sử dụng After trigger nếu muốn cập nhật bản ghi vì nó sẽ dẫn đến lỗi chỉ đọc.
  • [ Chèn | Cập nhật | Xóa ]
    Đây là các thao tác DML và chúng ta có thể sử dụng một trong hai thao tác này trong một trình kích hoạt nhất định.
  • trên [ Tên_bảng ]
    Chúng ta cần đề cập đến tên bảng mà trình kích hoạt đang được áp dụng. Đừng quên sử dụng trên và cũng đảm bảo bảng đã chọn có trong cơ sở dữ liệu.
  • [cho mỗi hàng | cho mỗi cột]
    1. Trình kích hoạt cấp hàng được thực thi trước hoặc sau bất kỳ giá trị cột nào của hàng thay đổi
    2. Trình kích hoạt cấp độ cột được thực thi trước hoặc sau cột được chỉ định thay đổi
  • [ trigger_body]
    Nó bao gồm các truy vấn cần được thực thi khi trình kích hoạt được gọi.

Vì vậy, đây là tất cả về một trình kích hoạt đơn giản. Nhưng chúng ta cũng có thể tạo một trình kích hoạt lồng nhau có thể thực hiện nhiều quá trình. Ngoài ra việc xử lý và diệt mối đúng lúc cũng rất quan trọng. Nếu chúng ta không kết thúc trình kích hoạt đúng cách, nó có thể dẫn đến một vòng lặp vô hạn.

Bạn có thể tự hỏi chúng ta có thể sử dụng trình kích hoạt lồng nhau trong trường hợp nào. Thay vì cung cấp cho bạn một câu trả lời phù hợp, hãy để tôi chia sẻ một kịch bản với bạn, điều này sẽ giúp bạn hiểu rõ hơn về trình kích hoạt lồng nhau. Tiếp tục tình huống trước đó, John gửi email cho mọi khách hàng mới đã được thêm vào cơ sở dữ liệu của công ty. Bây giờ, điều gì sẽ xảy ra nếu anh ta muốn theo dõi số lượng khách hàng mà email đã được gửi đến? Bây giờ John cần tạo một trình kích hoạt lồng nhau để theo dõi số lượng cùng với việc gửi email.

Đó là tất cả về cú pháp của trình kích hoạt, bây giờ hãy thử triển khai một ví dụ về trình kích hoạt trong SQL.

Ví dụ cho Trình kích hoạt:

Trong trình kích hoạt bên dưới, chúng tôi đang cố gắng tính toán tỷ lệ phần trăm của sinh viên ngay sau khi thông tin chi tiết của anh ta được cập nhật vào cơ sở dữ liệu.

CREATE TRIGGER sample_trigger
before INSERT
ON student
FOR EACH ROW
SET new.total = new.marks/6;

Đây là “ MỚI” từ khóa đề cập đến hàng đang bị ảnh hưởng.

Hoạt động trong Trình kích hoạt

Chúng ta có thể thực hiện nhiều thao tác bằng cách sử dụng trình kích hoạt. Một số có thể đơn giản và một số có thể phức tạp một chút, nhưng nếu chúng ta xem qua truy vấn thì sẽ dễ hiểu.

  • DROP A Trigger
DROP TRIGGER trigger name;
  • Hiển thị một trình kích hoạt

Đoạn mã dưới đây sẽ hiển thị tất cả các trình kích hoạt hiện có.

SHOW TRIGGERS;

Đoạn mã dưới đây sẽ hiển thị tất cả các trình kích hoạt có trong một cơ sở dữ liệu cụ thể.

SHOW TRIGGERS
IN database_name;

Ví dụ:

SHOW TRIGGERS IN edureka;

Trong ví dụ trên, tất cả các trình kích hoạt có trong cơ sở dữ liệu có tên Edureka sẽ được hiển thị.

Chúng tôi cũng xem xét một số biến thể chính của trình kích hoạt là Trước khi chèn và Sau khi chèn. Chúng tôi đã thấy một trình kích hoạt trong ví dụ này. Nhưng với sự trợ giúp của bảng, hãy xem cách này hoạt động chính xác như thế nào.

Như chúng ta đã hiểu cách tạo trình kích hoạt, bây giờ chúng ta hãy hiểu hai biến thể của trình kích hoạt đó là Trước khi chèn và Sau khi chèn. Để triển khai chúng, hãy tạo một bảng sinh viên với các cột khác nhau như được hiển thị bên dưới:

CREATE TABLE Student(
studentID INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(20),
LName VARCHAR(20),
Address VARCHAR(30),
City VARCHAR(15),
Marks INT,
PRIMARY KEY(studentID)
);

Bây giờ nếu chúng ta thực hiện truy vấn này, chúng ta sẽ nhận được bảng sau.

Hãy thử sử dụng biến thể đầu tiên, tức là Trước khi Chèn

CREATE TRIGGER calculate
before INSERT 
ON student
FOR EACH ROW
SET new.marks = new.marks+100;

Tại đây khi chúng ta chèn dữ liệu vào bảng sinh viên sẽ tự động kích hoạt sẽ được gọi. Trình kích hoạt sẽ thêm 100 vào cột điểm vào cột sinh viên.

Bây giờ, hãy sử dụng biến thể thứ hai, tức là Sau Chèn

Để sử dụng biến thể này, chúng ta cần thêm một bảng nữa, tức là Tỷ lệ phần trăm nơi trình kích hoạt sẽ lưu trữ kết quả. Sử dụng mã dưới đây để tạo Bảng Phần trăm.

create table Final_mark(
per int );

Bây giờ chúng ta hãy sử dụng trình kích hoạt chèn sau

CREATE TRIGGER total_mark
after insert 
ON student
FOR EACH ROW
insert into Final_mark values(new.marks);

Tại đây khi chúng tôi chèn dữ liệu vào bảng, total_mark trigger sẽ lưu trữ kết quả trong bảng Final_mark.

Đó là tất cả về hoạt động trên trình kích hoạt, bây giờ hãy tiếp tục và xem xét những ưu điểm và nhược điểm của nó.

Ưu điểm và Nhược điểm của Trình kích hoạt

Ưu điểm

  • Buộc bảo mật phê duyệt trên bảng có trong cơ sở dữ liệu
  • Trình kích hoạt cung cấp một cách khác để kiểm tra tính toàn vẹn của dữ liệu
  • Phản đối không hợp lệ trao đổi
  • Trình kích hoạt xử lý lỗi từ lớp cơ sở dữ liệu
  • Thông thường, trình kích hoạt có thể hữu ích để kiểm tra dữ liệu thay đổi trong bảng
  • Trình kích hoạt cung cấp một cách thay thế để chạy các tác vụ được phân bổ . Khi sử dụng trình kích hoạt, chúng tôi 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

Bất lợi s

  • Trình kích hoạt chỉ có thể cung cấp xác thực mở rộng , tức là, không phải tất cả các loại xác nhận. Để xác thực đơn giản, bạn có thể sử dụng các ràng buộc NOT NULL, UNIQUE, CHECK và FOREIGN KEY
  • Các trình kích hoạt có thể làm tăng chi phí của cơ sở dữ liệu
  • Các trình kích hoạt có thể khó khắc phục sự cố bởi vì chúng thực thi tự động trong cơ sở dữ liệu, điều này có thể không ẩn đối với các ứng dụng khách

Phần này đưa chúng ta đến phần cuối của bài viết Kích hoạt trong SQL. Tôi hy vọng bạn đã hiểu các khái niệm về Trình kích hoạt.

Nếu bạn muốn tìm hiểu thêm về MySQL và làm quen với cơ sở dữ liệu quan hệ nguồn mở này, hãy xem Khóa đào tạo chứng chỉ MySQL DBA của chúng tôi, đi kèm với khóa đào tạo trực tiếp do người hướng dẫn và thực - trải nghiệm dự án cuộc sống. Khóa đào tạo này sẽ giúp bạn hiểu sâu về MySQL và giúp bạn thành thạo chủ đề này.

Bạn có câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của Trình kích hoạt trong SQL này và chúng tôi sẽ liên hệ lại với bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về Dịch vụ Web Amazon (AWS) Tự động mở rộng quy mô

  2. SQL giữa toán tử

  3. Sử dụng Jenkins với Kubernetes AWS, Phần 2

  4. Sao lưu cơ sở dữ liệu SQL với VDP Advanced SQL Agent

  5. Không gian bảng SYSMGMTDATA là ĐẦY ĐỦ trong Kho lưu trữ Quản lý Cơ sở Hạ tầng Lưới (MGMTDB)