Kích hoạt mysql là gì

Kích hoạt là một đối tượng được xác định danh sách trong cơ sở dữ liệu cơ sở dữ liệu và được gắn chặt với một sự kiện xảy ra trên một bảng nào đó [điều kiện này có nghĩa là nó sẽ tự động thực hiện khi một sự kiện xảy ra trên một bảng]. This eventbao gồm. CHÈN, CẬP NHẬT hoặc XÓA một bảng. là một đối tượng được xác định danh sách trong cơ sở dữ liệu và được gắn chặt với một sự kiện xảy ra trên một bảng điều kiện nào đó [điều này có nghĩa là nó sẽ được tự động thực hiện khi một sự kiện xảy ra trên một bảng]. This eventbao gồm. CHÈN, CẬP NHẬT hoặc XÓA một bảng

Trình kích hoạt được đưa vào MySQL từ phiên bản 5. 0. 2 được đưa vào MySQL từ phiên bản 5. 0. 2

II. In sao lại sử dụng Trigger?

Trình kích hoạt được thực hiện tự động khi xuất hiện một hành động thay đổi trong bảng, nên người ta có thể áp dụng trình kích hoạt để tạo ra các công việc tự động thay cho việc phải làm thủ công bằng tay như. kiểm tra dữ liệu, đồng bộ hóa dữ liệu, đảm bảo các mối quan hệ giữa các bảng. được thực hiện tự động khi xuất hiện một hành động thay đổi trong bảng, nên người ta có thể ứng dụng kích hoạt để tạo ra các công việc tự động thay vì việc phải làm thủ công bằng tay như. kiểm tra dữ liệu, đồng bộ hóa dữ liệu, đảm bảo các mối quan hệ giữa các bảng

III. Ưu nhược điểm của trigger

- điểm ưu tiên

– Dễ dàng kiểm tra tính toàn vẹn của csdl. – Trình kích hoạt có thể bắt lỗi nghiệp vụ logic nghiệp vụ ở mức csdl

– Có thể sử dụng trình kích hoạt theo một cách khác để thay thế việc thực hiện các công việc đã hẹn theo giờ theo lịch

– Kích hoạt rất hiệu quả khi được sử dụng để kiểm tra những thay đổi của dữ liệu trong bảng

- Nhược điểm

– Kích hoạt chỉ là một phần mở rộng của hợp lệ kiểm tra tính toán của dữ liệu chứ không phải thay thế được hoàn thành toàn bộ công việc này

– Kích hoạt dừng hoạt động trong csdl, không hiển thị ở tầng giao diện. Do đó, khó chỉ ra điều gì xảy ra ở tầng csdl

– Kích hoạt thực hiện cập nhật lên bảng dữ liệu vì thế nó làm tăng lượng công việc lên csdl và làm cho hệ thống chạy chậm

IV. Activity of trigger in MySQL

Khi bạn tạo một trình kích hoạt trong MySQL, thì định nghĩa của nó được lưu trong tệp có phần mở rộng là '. TRG’ at directory of csdl

/data_folder/database_name/table_name.trg

Chúng ta có thể mở và chỉnh sửa

Một số giới hạn cần lưu ý khi sử dụng trình kích hoạt

  • Unable to call a normal life from trigger

  • Không thể tạo trình kích hoạt theo bảng ảo hoặc bảng tạm thời

  • Không thể sử dụng giao tác [giao dịch] trong trình kích hoạt

  • Kích hoạt không cho phép sử dụng lệnh RETURN

  • Sử dụng trình kích hoạt sẽ ảnh hưởng đến bộ nhớ tạm thời cho lệnh truy vấn

  • Tất cả các trình kích hoạt của csdl đều không được trùng tên

V. Create trigger

cú pháp

CREATE TRIGGER trigger_name trigger_time trigger_event

 ON table_name

 FOR EACH ROW

 BEGIN

 ...

 END

Giải thích

  • CREATE TRIGGER used to make trigger

  • Trigger_name là tên của trình kích hoạt được đặt theo trình tự [thời gian kích hoạt][tên bảng][sự kiện kích hoạt] là tên của trình kích hoạt được đặt theo trình tự [thời gian kích hoạt][tên bảng][sự kiện kích hoạt]

    ví dụ. before_products_update

  • Trigger_time is start trigger time. is time trigger

    • TRƯỚC. khi bạn muốn xử lý trước khi thực hiện thay đổi trên bảng dữ liệu. khi bạn muốn xử lý trước khi thực hiện thay đổi trên bảng dữ liệu

    • SAU ĐÓ. change on data table before then new handle after. change on data table before then new handle after

  • Trigger_event is the tracker of the event. Nó có 3 lựa chọn CHÈN, CẬP NHẬT hoặc XÓA. Mỗi trigger chỉ theo dõi được một sự kiện duy nhất. is the tracker of the event. Nó có 3 lựa chọn CHÈN, CẬP NHẬT hoặc XÓA. Mỗi trigger chỉ theo dõi được một sự kiện duy nhất

  • Mỗi trình kích hoạt phải gắn liền với một bảng dữ liệu chỉ được đưa ra sau từ khóa BẬT

  • Phần thân của trình kích hoạt nằm trong khối lệnh BEGIN...END

  • Từ khóa OLD chỉ đến dòng dữ liệu đang tồn tại trước khi thực hiện thao tác chỉnh sửa. Từ khóa NEW chỉ đến dòng dữ liệu mới xuất hiện sau khi thực hiện thao tác chỉnh sửa

Chúng ta đã có các bảng sản phẩm trong csdl với cấu trúc như sau

-- ----------------------------
-- Table structure for products
-- ----------------------------
DROP TABLE IF EXISTS `products`;
CREATE TABLE `products` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `title` varchar[255] COLLATE utf8_unicode_ci DEFAULT NULL,
  `content` text COLLATE utf8_unicode_ci,
  PRIMARY KEY [`id`]
] ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Records of products
-- ----------------------------
INSERT INTO `products` VALUES ['1', 'Apple', 'This is Apple'];
INSERT INTO `products` VALUES ['2', 'Samsung', 'This is Samsung'];
INSERT INTO `products` VALUES ['3', 'Nokia', 'This is Nokia'];
INSERT INTO `products` VALUES ['4', 'Microsoft', 'This is Microsoft'];

Viết kích hoạt, bất cứ khi nào xảy ra việc thay đổi dữ liệu trên bảng sản phẩm thì những thay đổi đó sẽ được ghi nhận và được lưu vào một bảng khác. Chúng ta tạo một bảng mới thực hiện chức năng này với cấu trúc như sau

DROP TABLE IF EXISTS `products_tmp`;
CREATE TABLE `products_tmp` [
  `id` int[11] NOT NULL AUTO_INCREMENT,
  `title` varchar[255] COLLATE utf8_unicode_ci DEFAULT NULL,
  `content` text COLLATE utf8_unicode_ci,
  `date` varchar[255] COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY [`id`]
] ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

To theo dõi nhưng thay đổiTôi chỉnh sửa các sản phẩm mà chúng ta tạo ra để kích hoạt theo dõi lệnh cập nhật trên trường dữ liệu này

DROP TRIGGER IF EXISTS before_product_update;
DELIMITER $$

 CREATE TRIGGER before_product_update

 BEFORE UPDATE ON products

 FOR EACH ROW

BEGIN

 INSERT INTO products_tmp

SET

 title = OLD.title,

 content = OLD.content,

 date = NOW[];

END$$

 DELIMITER ;

Bây giờ chúng ta kiểm tra thử câu lệnh cập nhật

UPDATE products set title = 'Apple change' WHERE id = '1';

sau đó ta thấy bảng sản phẩm đã thay đổi

SELECT * FROM `products`;

and table products_tmp đã lưu mục đã chỉnh sửa

SELECT * FROM `products_tmp`;

oke, vậy là trigger đã tạo thành công

VI. Trình kích hoạt quản lý trong MySQL

Quản lý các trình kích hoạt được tạo ra trong csdl là một thao tác cần nắm giữ. MySQL cho phép chúng ta xem danh sách các trình kích hoạt có trong csdl bằng các câu lệnh sau

  • To delete trigger ta use the command after
________số 8
  • Hiển thị tất cả các trình kích hoạt
 SHOW TRIGGERS;

KL. Thao tác quản lý dữ liệu có dung lượng lớn không hề đơn giản, không phải ai cũng sử dụng 1 cách thuần thục. Rất có thể sẽ có người xóa nhầm trong cơ sở dữ liệu, sẽ gây ra ảnh hưởng không nhỏ, nếu dữ liệu đó quan trọng. Use trigger could get back the data has been delete. Có thể theo dõi ai đó xóa, sửa, xóa ngày nào , giờ nào. Tuy nhiên, chúng ta cũng cần lưu ý, tạo nhiều Trigger thực hiện các cập nhật lên bảng dữ liệu, nó làm tăng lượng công việc lên csdl và làm cho hệ thống chạy chậm

Chủ Đề