Ví dụ kích hoạt MySQL

Trình kích hoạt MySQL là một đối tượng cơ sở dữ liệu được liên kết với một bảng. Nó sẽ được kích hoạt khi một hành động xác định được thực thi cho bảng. Trình kích hoạt có thể được thực thi khi bạn chạy một trong các câu lệnh MySQL sau trên bảng. CHÈN, CẬP NHẬT và XÓA và nó có thể được gọi trước hoặc sau sự kiện

Bạn có thể tìm thấy lời giải thích chi tiết về chức năng và cú pháp kích hoạt trong bài viết này

Yêu cầu chính để chạy các Trình kích hoạt MySQL như vậy là có các đặc quyền SIÊU NGƯỜI DÙNG MySQL

Không thể cấp đặc quyền SUPERUSER MySQL cho người dùng được lưu trữ trên máy chủ SiteGround do thiết lập máy chủ

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

Có 6 loại trigger khác nhau trong MySQL

1. Trước khi kích hoạt cập nhật.
Như tên ngụ ý, nó là trình kích hoạt thực hiện trước khi một bản cập nhật được kích hoạt. Nếu chúng ta viết một câu lệnh cập nhật, thì các hành động của trình kích hoạt sẽ được thực hiện trước khi thực hiện cập nhật.

Ví dụ.
Xem xét các bảng.

create table customer (acc_no integer primary key, 
                                 cust_name varchar(20), 
                                  avail_balance decimal);
create table mini_statement (acc_no integer, 
                              avail_balance decimal, 
                     foreign key(acc_no) references customer(acc_no) on delete cascade); 

Chèn giá trị vào chúng

insert into customer values (1000, "Fanny", 7000);
insert into customer values (1001, "Peter", 12000); 

Kích hoạt để chèn các giá trị (cũ) vào bản ghi mini_statement (bao gồm số tài khoản và số dư khả dụng dưới dạng tham số) trước khi cập nhật bất kỳ bản ghi nào trong bản ghi/bảng khách hàng

delimiter //
create trigger update_cus
      -> before update on customer
      -> for each row
      -> begin
      -> insert into mini_statement values (old.acc_no, old.avail_balance);
      -> end; // 

Thực hiện cập nhật để gọi trình kích hoạt

delimiter;
update customer set avail_balance = avail_balance + 3000 where acc_no = 1001;
update customer set avail_balance = avail_balance + 3000 where acc_no = 1000; 

đầu ra

select *from mini_statement;
+--------+---------------+
| acc_no | avail_balance |
+--------+---------------+
|   1001 |         12000 |
|   1000 |          7000 |
+--------+---------------+
2 rows in set (0.0007 sec) 



2. Sau khi kích hoạt cập nhật.
Như tên ngụ ý, trình kích hoạt này được gọi sau khi cập nhật xảy ra. (tôi. e. , nó được triển khai sau khi câu lệnh cập nhật được thực thi. ).

Ví dụ.
Chúng tôi tạo một bảng khác.

create table micro_statement (acc_no integer, 
                                  avail_balance decimal, 
            foreign key(acc_no) references customer(acc_no) on delete cascade); 

Chèn một giá trị khác vào khách hàng

insert into customer values (1002, "Janitor", 4500);
Query OK, 1 row affected (0.0786 sec) 

Kích hoạt để chèn các giá trị (mới) của số tài khoản và số dư khả dụng vào bản ghi micro_statement sau khi cập nhật xảy ra

delimiter //
create trigger update_after
       -> after update on customer
       -> for each row
       -> begin
       -> insert into micro_statement values(new.acc_no, new.avail_balance);
       -> end; // 

Thực hiện cập nhật để gọi trình kích hoạt

________số 8

đầu ra

select *from micro_statement;
+--------+---------------+
| acc_no | avail_balance |
+--------+---------------+
|   1002 |          6000 |
+--------+---------------+
1 row in set (0.0007 sec) 



3. Trước khi Chèn Trigger.
Như tên ngụ ý, trình kích hoạt này được gọi trước khi chèn hoặc trước khi câu lệnh chèn được thực thi.

Ví dụ.
Xem xét các bảng.

insert into customer values (1000, "Fanny", 7000);
insert into customer values (1001, "Peter", 12000); 
0

Kích hoạt để chèn thông tin liên hệ như tên, ngày sinh và ngày tạo/người dùng vào một bảng liên hệ trước khi chèn xảy ra

insert into customer values (1000, "Fanny", 7000);
insert into customer values (1001, "Peter", 12000); 
1

Thực hiện chèn để gọi trình kích hoạt

insert into customer values (1000, "Fanny", 7000);
insert into customer values (1001, "Peter", 12000); 
2

đầu ra

insert into customer values (1000, "Fanny", 7000);
insert into customer values (1001, "Peter", 12000); 
3



4. Sau khi chèn kích hoạt.
Như tên ngụ ý, trình kích hoạt này được gọi sau khi thực hiện thao tác chèn.

Ví dụ.
Xem xét các bảng.

insert into customer values (1000, "Fanny", 7000);
insert into customer values (1001, "Peter", 12000); 
4

Kích hoạt để chèn contact_id và thông tin ngày xóa liên hệ/người dùng vào bản ghi contact_audit sau khi xóa xảy ra

Trình kích hoạt trong MySQL với ví dụ là gì?

Trình kích hoạt MySQL là đối tượng cơ sở dữ liệu được liên kết với bảng . Nó sẽ được kích hoạt khi một hành động xác định được thực thi cho bảng. Trình kích hoạt có thể được thực thi khi bạn chạy một trong các câu lệnh MySQL sau trên bảng. CHÈN, CẬP NHẬT và XÓA và nó có thể được gọi trước hoặc sau sự kiện.

Làm cách nào để tạo trình kích hoạt trong MySQL?

Để tạo hoặc loại bỏ trình kích hoạt, hãy sử dụng câu lệnh CREATE TRIGGER hoặc DROP TRIGGER , được mô tả trong Phần 13. 1. 22, “TẠO Câu lệnh KÍCH HOẠT” và Phần 13. 1. 34, “Tuyên bố DROP TRIGGER”. Đây là một ví dụ đơn giản liên kết một trình kích hoạt với một bảng, để kích hoạt cho các thao tác INSERT.

Trình kích hoạt SQL là gì đưa ra một ví dụ?

Kích hoạt. Trình kích hoạt là một thủ tục được lưu trữ trong cơ sở dữ liệu sẽ tự động gọi bất cứ khi nào một sự kiện đặc biệt trong cơ sở dữ liệu xảy ra . Ví dụ: một trình kích hoạt có thể được gọi khi một hàng được chèn vào một bảng đã chỉ định hoặc khi các cột nhất định của bảng đang được cập nhật.

Làm cách nào để viết hàm kích hoạt trong MySQL?

Chúng ta có thể tạo trình kích hoạt mới trong MySQL bằng cách sử dụng câu lệnh CREATE TRIGGER. Đó là để đảm bảo rằng chúng tôi có các đặc quyền kích hoạt trong khi sử dụng lệnh CREATE TRIGGER. Sau đây là cú pháp cơ bản để tạo trigger. TẠO TRIGGER trigger_name trigger_time trigger_event .