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

Kích hoạt trong SQL

Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm trigger trong SQL và cách triển khai nó với sự trợ giúp của một ví dụ.

Kích hoạt trong ngôn ngữ truy vấn có cấu trúc là một tập hợp các câu lệnh thủ tục được thực thi tự động khi có bất kỳ phản hồi nào đối với các sự kiện nhất định trên bảng trong cơ sở dữ liệu. Các trình kích hoạt được sử dụng để bảo vệ tính toàn vẹn của dữ liệu trong cơ sở dữ liệu.

Hãy xem tình huống sau để hiểu khái niệm về trình kích hoạt trong SQL:

Giả sử Supriya là giám đốc công nghệ thông tin trong một công ty đa quốc gia. Khi hồ sơ của một nhân viên mới được nhập vào cơ sở dữ liệu, cô ấy phải gửi thông báo 'Chúc mừng' cho từng nhân viên mới. Nếu có năm hoặc sáu nhân viên, Supriya có thể làm điều đó theo cách thủ công, nhưng nếu số lượng Nhân viên mới nhiều hơn một nghìn, thì trong điều kiện như vậy, cô ấy phải sử dụng trình kích hoạt trong cơ sở dữ liệu.

Do đó, Supriya phải tạo trình kích hoạt trong bảng, trình kích hoạt này sẽ tự động gửi thông báo 'Xin chúc mừng' đến các nhân viên mới sau khi hồ sơ của họ được đưa vào cơ sở dữ liệu.

Trình kích hoạt luôn được thực thi với bảng cụ thể trong cơ sở dữ liệu. Nếu chúng tôi xóa bảng, tất cả các trình kích hoạt được liên kết với bảng đó cũng sẽ tự động bị xóa.

Các trình kích hoạt trong Ngôn ngữ truy vấn có cấu trúc chỉ được gọi trước khi các sự kiện xảy ra hoặc sau khi các sự kiện đã xảy ra.

Chỉ có ba sự kiện xảy ra trong trình kích hoạt trước hoặc sau các sự kiện là sự kiện Chèn, sự kiện Cập nhật hoặc sự kiện Xóa.

1. CHÈN sự kiện :Sự kiện chèn xảy ra bất cứ khi nào một bản ghi mới được chèn vào bảng.

2. CẬP NHẬT Sự kiện :Sự kiện cập nhật xảy ra bất cứ khi nào các bản ghi hiện có được cập nhật trong bảng.

3. XÓA Sự kiện: Sự kiện Xóa xảy ra bất cứ khi nào bản ghi bị xóa khỏi bảng.

Các loại trình kích hoạt trong Ngôn ngữ truy vấn có cấu trúc

Sau đây là sáu loại trình kích hoạt được sử dụng trong Ngôn ngữ truy vấn có cấu trúc:

1. SAU KHI CHÈN kích hoạt:

Trình kích hoạt chèn sau được gọi trong SQL sau khi các bản ghi được chèn vào bảng.

2. Trình kích hoạt SAU KHI CẬP NHẬT:

Trình kích hoạt sau khi cập nhật được gọi trong SQL sau khi các bản ghi hiện có trong bảng được cập nhật.

3. Kích hoạt SAU KHI XÓA:

Kích hoạt sau khi xóa được gọi trong SQL sau khi bản ghi bị xóa khỏi bảng.

4. TRƯỚC KHI CHÈN kích hoạt:

Trình kích hoạt chèn trước được gọi trong SQL trước khi các bản ghi được chèn vào bảng.

5. TRƯỚC KHI CẬP NHẬT trình kích hoạt:

Trình kích hoạt trước khi cập nhật được gọi trong SQL trước khi các bản ghi hiện có trong bảng được cập nhật.

6. TRƯỚC KHI XÓA trình kích hoạt:

Trình kích hoạt xóa trước được gọi trong SQL trước khi bản ghi bị xóa khỏi bảng.

Cú pháp của trình kích hoạt trong SQL:

CREATE TRIGGER Trigger_Name  

[BEFORE | AFTER]  [Insert | Update | Delete] 

ON [Table_Name] 

[FOR EACH ROW | FOR EACH COLUMN] 

AS 

Set of SQL Statement
  • Trong cú pháp trình kích hoạt, chúng tôi phải xác định tên trình kích hoạt ngay sau từ khóa CREATE TRIGGER trong cú pháp.
  • Sau tên trình kích hoạt, chúng tôi phải xác định trình kích hoạt nào chúng tôi muốn gọi, từ khóa kích hoạt trước hoặc sau trình kích hoạt với tên sự kiện.
  • Sau đó, chúng tôi phải đề cập đến tên bảng mà trên đó kích hoạt đã xảy ra.
  • Sau tên bảng, chúng ta phải xác định trình kích hoạt ở cấp hàng hoặc trình kích hoạt cấp cột.
  • Và cuối cùng, chúng ta phải viết câu lệnh SQL hoạt động dựa trên các sự kiện xảy ra.

Ví dụ về trình kích hoạt trong SQL

Để hiểu khái niệm về trình kích hoạt trong SQL, chúng ta phải tạo một bảng mà trên đó trình kích hoạt sẽ được thực thi.

Truy vấn sau tạo bảng Sinh viên trong cơ sở dữ liệu SQL.

CREATE TABLE Student(

Student_rollno INT NOT NULL PRIMARY KEY,

FirstName varchar(40),

English_Marks INT,

Physics_Marks INT,

Chemistry_Marks INT,

Biology_Marks INT,

Maths_Marks INT,

Total_Marks INT,

Percentage INT);

Truy vấn sau đây hiển thị cấu trúc của bảng Sinh viên:

DESC Sinh viên;

Field Loại NULL Phím Mặc định Thêm
Student_RollNo INT KHÔNG PRI KHÔNG ĐẦY ĐỦ
First_Name Varchar (40) KHÔNG ĐẦY ĐỦ
English_Marks INT KHÔNG ĐẦY ĐỦ
Physics_Marks INT KHÔNG ĐẦY ĐỦ
Chemistry_Marks INT KHÔNG ĐẦY ĐỦ
Biology_Marks INT KHÔNG ĐẦY ĐỦ
Maths_Marks INT KHÔNG ĐẦY ĐỦ
Total_Marks INT KHÔNG ĐẦY ĐỦ
Phần trăm INT KHÔNG ĐẦY ĐỦ

Truy vấn sau sẽ kích hoạt trình kích hoạt trước khi chèn hồ sơ học sinh vào bảng:

CREATE TRIGGER Student _Marks  

BEFORE INSERT 

ON 

Student 

FOR EACH ROW 

SET new.Total_Marks = new.English_Marks + new.Physics_Marks + new.Chemistry_Marks + new.Biology_Marks + new.Maths_Marks,   

new.Percentage = ( new.Total_Marks / 500) * 100;

Các truy vấn sau đây chèn bản ghi vào bảng Sinh viên.

INSERT INTO Student (Student_RollNo, First_Name, English_Marks, Physics_Marks, Chemistry_Marks,Biology_Marks, Maths_Marks, Total_Marks, Percentage) VALUES ( 1, ‘Raman’, 90, 80, 75, 70 ,92, 0, 0);  

Để kiểm tra kết quả của câu lệnh INSERT ở trên, bạn phải nhập câu lệnh SELECT sau:

SELECT * FROM Student

Đầu ra:

Student_RollNo First_Name English_Marks Physics_Marks Chemistry_Marks Biology_Marks Maths_Marks Total_Marks Phần trăm
1 Raman 90 80 75 70 92 407 81

Ưu điểm của Trigger trong SQL

Sau đây là ba ưu điểm chính của trình kích hoạt trong Ngôn ngữ truy vấn có cấu trúc:

  1. SQL cung cấp một cách thay thế để duy trì tính toàn vẹn của dữ liệu và tham chiếu trong các bảng.
  2. Tự động kích hoạt trợ giúp trong việc thực hiện các tác vụ đã lên lịch.
  3. Họ phát hiện các lỗi trong lớp cơ sở dữ liệu của nhiều doanh nghiệp khác nhau.
  4. Chúng cho phép người dùng cơ sở dữ liệu xác thực các giá trị trước khi chèn và cập nhật.

Nhược điểm của Trình kích hoạt trong SQL

Sau đây là những nhược điểm chính của trình kích hoạt trong Ngôn ngữ truy vấn có cấu trúc:

  1. Chúng không được biên dịch.
  2. Không thể tìm và gỡ lỗi trong trình kích hoạt.
  3. Nếu chúng tôi sử dụng mã phức tạp trong trình kích hoạt, nó sẽ khiến ứng dụng chạy chậm hơn.
  4. Kích hoạt làm tăng tải cao trên hệ thống cơ sở dữ liệu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngưỡng tối ưu hóa - Dữ liệu nhóm và tổng hợp, Phần 2

  2. Kiểm tra các tuyên bố DML cho OLTP trong bộ nhớ

  3. Sử dụng Salesforce SOQL từ Linux

  4. Cơ sở dữ liệu của bạn có được bảo mật không? Nghĩ lại

  5. Mô hình dữ liệu ứng dụng đào tạo Marathon