Thứ ba, 10/12/2019 | 00:00 GMT+7

Cách quản lý và sử dụng trình kích hoạt database MySQL trên Ubuntu 18.04

Trong MySQL, một trình kích hoạt là một lệnh SQL do user định nghĩa được gọi tự động trong một thao tác INSERT , DELETE hoặc UPDATE . Mã kích hoạt được liên kết với một bảng và bị hủy sau khi một bảng bị xóa. Bạn có thể chỉ định thời gian hành động kích hoạt và đặt liệu nó sẽ được kích hoạt trước hoặc sau sự kiện database đã xác định.

 

Kích hoạt có một số lợi thế. Ví dụ, bạn có thể sử dụng chúng để tạo giá trị của một cột dẫn xuất trong một INSERT . Một trường hợp sử dụng khác là thực thi tính toàn vẹn tham chiếu trong đó bạn có thể sử dụng trình kích hoạt để lưu bản ghi vào nhiều bảng có liên quan. Các lợi ích khác bao gồm ghi log các hành động của user để kiểm tra bảng cũng như sao chép trực tiếp dữ liệu trên các schemas database khác nhau nhằm mục đích dự phòng để ngăn chặn một điểm lỗi duy nhất.

Bạn cũng có thể sử dụng trình kích hoạt để giữ các luật xác thực ở cấp database . Điều này giúp chia sẻ nguồn dữ liệu trên nhiều ứng dụng mà không vi phạm logic nghiệp vụ. Điều này làm giảm đáng kể các chuyến đi khứ hồi đến server database , do đó cải thiện thời gian phản hồi của các ứng dụng của bạn. Vì server database thực thi các trình kích hoạt, chúng có thể tận dụng các tài nguyên server được cải thiện như RAM và CPU.

Trong hướng dẫn này, bạn sẽ tạo, sử dụng và xóa các loại trình kích hoạt khác nhau trên database MySQL của bạn .

Yêu cầu

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:

Bước 1 - Tạo database mẫu

Trong bước này, bạn sẽ tạo một database khách hàng mẫu với nhiều bảng để chứng minh cách hoạt động của trình kích hoạt MySQL.

Để hiểu thêm về truy vấn MySQL, hãy đọc phần Giới thiệu về truy vấn trong MySQL của ta .

Đầu tiên, đăng nhập vào server MySQL của bạn với quyền root :

  • mysql -u root -p

Nhập password root MySQL của bạn khi được yêu cầu và nhấn ENTER để tiếp tục. Khi bạn thấy dấu nhắc mysql> , hãy chạy lệnh sau để tạo database test_db :

  • Create database test_db;
Output
Query OK, 1 row affected (0.00 sec) 

Tiếp theo, chuyển sang test_db với:

  • Use test_db;
Output
Database changed 

Bạn sẽ bắt đầu bằng cách tạo một bảng customers . Bảng này sẽ chứa các bản ghi của customer_id bao gồm customer_id , customer_namelevel . Sẽ có hai cấp độ khách hàng: BASICVIP .

  • Create table customers(customer_id BIGINT PRIMARY KEY, customer_name VARCHAR(50), level VARCHAR(50) ) ENGINE=INNODB;
Output
Query OK, 0 rows affected (0.01 sec) 

Bây giờ, hãy thêm một vài bản ghi vào bảng customers . Để thực hiện việc này, hãy chạy lần lượt các lệnh sau:

  • Insert into customers (customer_id, customer_name, level )values('1','JOHN DOE','BASIC');
  • Insert into customers (customer_id, customer_name, level )values('2','MARY ROE','BASIC');
  • Insert into customers (customer_id, customer_name, level )values('3','JOHN DOE','VIP');

Bạn sẽ thấy kết quả kết quả sau khi chạy từng INSERT :

Output
Query OK, 1 row affected (0.01 sec) 

Để đảm bảo các bản ghi mẫu đã được chèn thành công, hãy chạy SELECT :

  • Select * from customers;
Output
+-------------+---------------+-------+ | customer_id | customer_name | level | +-------------+---------------+-------+ |           1 | JOHN DOE      | BASIC | |           2 | MARY ROE      | BASIC | |           3 | JOHN DOE      | VIP   | +-------------+---------------+-------+ 3 rows in set (0.00 sec) 

Bạn cũng cần tạo một bảng khác để chứa thông tin liên quan về account customers . Bảng sẽ có các trường customer_idstatus_notes .

Chạy lệnh sau:

  • Create table customer_status(customer_id BIGINT PRIMARY KEY, status_notes VARCHAR(50)) ENGINE=INNODB;

Tiếp theo, bạn sẽ tạo một bảng sales . Bảng này sẽ chứa dữ liệu bán hàng liên quan đến các khách hàng khác nhau thông qua cột customer_id :

  • Create table sales(sales_id BIGINT PRIMARY KEY, customer_id BIGINT, sales_amount DOUBLE ) ENGINE=INNODB;
Output
Query OK, 0 rows affected (0.01 sec) 

Bạn sẽ thêm dữ liệu mẫu vào dữ liệu sales trong các bước tiếp theo trong khi kiểm tra các trình kích hoạt. Tiếp theo, tạo một bảng audit_log để ghi lại các cập nhật được thực hiện cho bảng sales khi bạn triển khai trình kích hoạt AFTER UPDATE ở Bước 5:

  • Create table audit_log(log_id BIGINT PRIMARY KEY AUTO_INCREMENT, sales_id BIGINT, previous_amount DOUBLE, new_amount DOUBLE, updated_by VARCHAR(50), updated_on DATETIME ) ENGINE=INNODB;
Output
Query OK, 0 rows affected (0.02 sec) 

Với database test_db và bốn bảng tại chỗ, bây giờ bạn sẽ chuyển sang làm việc với các trình kích hoạt MySQL khác nhau trong database của bạn .

Bước 2 - Tạo trước khi chèn kích hoạt

Trong bước này, bạn sẽ kiểm tra cú pháp của trình kích hoạt MySQL trước khi áp dụng logic này để tạo trình kích hoạt BEFORE INSERT xác thực trường sales_amount khi dữ liệu được chèn vào bảng sales .

Cú pháp chung để tạo trình kích hoạt MySQL được hiển thị trong ví dụ sau:

DELIMITER // CREATE TRIGGER [TRIGGER_NAME] [TRIGGER TIME] [TRIGGER EVENT] ON [TABLE] FOR EACH ROW [TRIGGER BODY]// DELIMITER ; 

Cấu trúc của trigger bao gồm:

DELIMITER // : Dấu phân cách MySQL mặc định là ; —Cần phải thay đổi nó thành một cái gì đó khác để MySQL coi các dòng sau là một lệnh cho đến khi nó chạm vào dấu phân cách tùy chỉnh của bạn. Trong ví dụ này, dấu phân cách được thay đổi thành // và sau đó là ; dấu phân cách được xác định lại ở cuối.

[TRIGGER_NAME] : Một trình kích hoạt phải có tên và đây là nơi bạn bao gồm giá trị.

[TRIGGER TIME] : Một trình kích hoạt có thể được gọi trong các thời gian khác nhau. MySQL cho phép bạn xác định xem trình kích hoạt sẽ bắt đầu trước hoặc sau một hoạt động database .

[TRIGGER EVENT] : Trình kích hoạt chỉ được gọi bằng các thao tác INSERT , UPDATEDELETE . Bạn có thể sử dụng bất kỳ giá trị nào ở đây tùy thuộc vào những gì bạn muốn đạt được.

[TABLE] : Bất kỳ trình kích hoạt nào bạn tạo trên database MySQL của bạn đều phải được liên kết với một bảng.

FOR EACH ROW : Câu lệnh này yêu cầu MySQL thực thi mã kích hoạt cho mọi hàng mà trình kích hoạt ảnh hưởng.

[TRIGGER BODY] : Mã được thực thi khi trình kích hoạt được gọi được gọi là thân trình kích hoạt . Đây có thể là một câu lệnh SQL đơn hoặc nhiều lệnh. Lưu ý nếu bạn đang thực thi nhiều câu lệnh SQL trên thân trình kích hoạt, bạn phải đặt chúng giữa một khối BEGIN...END .

Lưu ý: Khi tạo nội dung trình kích hoạt, bạn có thể sử dụng các từ khóa OLDNEW để truy cập các giá trị cột cũ và mới được nhập trong thao tác INSERT , UPDATEDELETE . Trong trình kích hoạt DELETE , chỉ có thể sử dụng từ khóa OLD (bạn sẽ sử dụng từ khóa này trong Bước 4).

Đến đây bạn sẽ tạo trình kích hoạt BEFORE INSERT đầu tiên của bạn . Trình kích hoạt này sẽ được liên kết với bảng sales và nó sẽ được gọi trước khi một bản ghi được chèn vào để xác thực sales_amount . Chức năng của trình kích hoạt là kiểm tra xem sales_amount được chèn vào bảng bán hàng có lớn hơn 10000 hay không và phát sinh lỗi nếu giá trị này là true.

Đảm bảo rằng bạn đã đăng nhập vào server MySQL. Sau đó, nhập lần lượt các lệnh MySQL sau:

  • DELIMITER //
  • CREATE TRIGGER validate_sales_amount
  • BEFORE INSERT
  • ON sales
  • FOR EACH ROW
  • IF NEW.sales_amount>10000 THEN
  • SIGNAL SQLSTATE '45000'
  • SET MESSAGE_TEXT = 'Sale has exceeded the allowed amount of 10000.';
  • END IF//
  • DELIMITER ;

Bạn đang sử dụng câu lệnh IF...THEN...END IF để đánh giá xem số tiền được cung cấp trong INSERT có nằm trong phạm vi của bạn hay không. Trình kích hoạt có thể extract giá trị sales_amount mới được cung cấp bằng cách sử dụng từ khóa NEW .

Để đưa ra thông báo lỗi chung, bạn sử dụng các dòng sau để thông báo cho user về lỗi:

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Sale has exceeded the allowed amount of 10000.'; 

Tiếp theo, hãy chèn một bản ghi có sales_amount11000 vào bảng sales để kiểm tra xem trình kích hoạt có dừng hoạt động hay không:

  • Insert into sales(sales_id, customer_id, sales_amount) values('1','1','11000');
Output
ERROR 1644 (45000): Sale has exceeded the allowed amount of 10000. 

Lỗi này cho thấy rằng mã kích hoạt đang hoạt động như mong đợi.

Bây giờ hãy thử một bản ghi mới với giá trị 7500 để kiểm tra xem lệnh có thành công hay không:

  • Insert into sales(sales_id, customer_id, sales_amount) values('1','1','7500');

Vì giá trị nằm trong phạm vi được đề xuất, bạn sẽ thấy kết quả sau:

Output
Query OK, 1 row affected (0.01 sec) 

Để xác nhận dữ liệu đã được chèn, hãy chạy lệnh sau:

  • Select * from sales;

Kết quả xác nhận dữ liệu có trong bảng:

Output
+----------+-------------+--------------+ | sales_id | customer_id | sales_amount | +----------+-------------+--------------+ |        1 |           1 |         7500 | +----------+-------------+--------------+ 1 row in set (0.00 sec) 

Trong bước này, bạn đã kiểm tra các trình kích hoạt để xác thực dữ liệu trước khi chèn vào database .

Tiếp theo, bạn sẽ làm việc với trình kích hoạt AFTER INSERT để lưu thông tin liên quan vào các bảng khác nhau.

Bước 3 - Tạo một kích hoạt sau khi chèn

AFTER INSERT kích hoạt được thực thi khi các bản ghi được chèn thành công vào bảng. Chức năng này được dùng để chạy các lôgic kinh doanh khác một cách tự động. Ví dụ: trong ứng dụng ngân hàng, trình kích hoạt AFTER INSERT có thể đóng account khoản vay khi khách hàng hoàn tất việc thanh toán khoản vay. Trình kích hoạt có thể giám sát tất cả các khoản thanh toán được đưa vào bảng giao dịch và tự động đóng khoản vay khi số dư khoản vay bằng 0.

Trong bước này, bạn sẽ làm việc với bảng customer_status của bạn bằng cách sử dụng trình kích hoạt AFTER INSERT để nhập profile khách hàng có liên quan.

Để tạo trình kích hoạt AFTER INSERT , hãy nhập các lệnh sau:

  • DELIMITER //
  • CREATE TRIGGER customer_status_records
  • AFTER INSERT
  • ON customers
  • FOR EACH ROW
  • Insert into customer_status(customer_id, status_notes) VALUES(NEW.customer_id, 'ACCOUNT OPENED SUCCESSFULLY')//
  • DELIMITER ;
Output
Query OK, 0 rows affected (0.00 sec) 

Ở đây bạn hướng dẫn MySQL lưu một bản ghi khác vào bảng customer_status sau khi một bản ghi khách hàng mới được chèn vào bảng customers .

Bây giờ, hãy chèn một bản ghi mới vào bảng customers để xác nhận mã kích hoạt của bạn sẽ được gọi:

  • Insert into customers (customer_id, customer_name, level )values('4','DAVID DOE','VIP');
Output
Query OK, 1 row affected (0.01 sec) 

Vì bản ghi đã được chèn thành công, hãy kiểm tra xem bản ghi trạng thái mới đã được chèn vào bảng customer_status :

  • Select * from customer_status;
Output
+-------------+-----------------------------+ | customer_id | status_notes                | +-------------+-----------------------------+ |           4 | ACCOUNT OPENED SUCCESSFULLY | +-------------+-----------------------------+ 1 row in set (0.00 sec) 

Đầu ra xác nhận trình kích hoạt đã chạy thành công.

Bộ kích hoạt AFTER INSERT rất hữu ích trong việc theo dõi vòng đời của khách hàng. Trong môi trường production , account của khách hàng có thể trải qua các giai đoạn khác nhau như mở, tạm ngừng và đóng account .

Trong các bước sau, bạn sẽ làm việc với trình kích hoạt UPDATE .

Bước 4 - Tạo kích hoạt trước khi cập nhật

Trình kích hoạt BEFORE UPDATE tương tự như trình kích hoạt BEFORE INSERT — sự khác biệt là khi chúng được gọi. Bạn có thể sử dụng trình kích hoạt BEFORE UPDATE để kiểm tra logic nghiệp vụ trước khi bản ghi được cập nhật. Để kiểm tra điều này, bạn sẽ sử dụng bảng customers mà bạn đã chèn một số dữ liệu.

Bạn có hai cấp độ cho khách hàng của bạn trong database . Trong ví dụ này, khi account khách hàng được nâng cấp lên cấp VIP , account đó không thể bị hạ cấp xuống cấp BASIC . Để thực thi luật như vậy, bạn sẽ tạo một trình kích hoạt BEFORE UPDATE sẽ thực thi trước câu lệnh UPDATE như được hiển thị sau. Nếu user database cố gắng hạ cấp một khách hàng xuống cấp BASIC từ cấp VIP , một ngoại lệ do user xác định sẽ được kích hoạt.

Nhập lần lượt các lệnh SQL sau để tạo trình kích hoạt BEFORE UPDATE :

  • DELIMITER //
  • CREATE TRIGGER validate_customer_level
  • BEFORE UPDATE
  • ON customers
  • FOR EACH ROW
  • IF OLD.level='VIP' THEN
  • SIGNAL SQLSTATE '45000'
  • SET MESSAGE_TEXT = 'A VIP customer can not be downgraded.';
  • END IF //
  • DELIMITER ;

Bạn sử dụng từ khóa OLD để nắm bắt cấp độ mà user đang cung cấp khi chạy lệnh UPDATE . , bạn sử dụng câu lệnh IF...THEN...END IF để báo hiệu một câu lệnh lỗi chung cho user .

Tiếp theo, chạy lệnh SQL sau để cố gắng hạ cấp account khách hàng được liên kết với customer_id của 3 :

  • Update customers set level='BASIC' where customer_id='3';

Bạn sẽ thấy kết quả sau cung cấp SET MESSAGE_TEXT :

Output
ERROR 1644 (45000): A VIP customer can not be downgraded. 

Nếu bạn chạy cùng một lệnh cho khách hàng cấp BASIC và cố gắng nâng cấp account lên cấp VIP , lệnh sẽ thực thi thành công:

  • Update customers set level='VIP' where customer_id='1';
Output
Rows matched: 1  Changed: 1  Warnings: 0 

Bạn đã sử dụng trình kích hoạt BEFORE UPDATE để thực thi luật kinh doanh. Đến đây bạn sẽ chuyển sang sử dụng trình kích hoạt AFTER UPDATE để ghi log kiểm tra.

Bước 5 - Tạo kích hoạt sau khi cập nhật

Một trình kích hoạt AFTER UPDATE được gọi khi bản ghi database được cập nhật thành công. Hành vi này làm cho trình kích hoạt phù hợp để ghi log kiểm tra. Trong môi trường nhiều user , administrator có thể cần xem lịch sử user cập nhật bản ghi trong một bảng cụ thể cho mục đích kiểm tra.

Bạn sẽ tạo một trình kích hoạt ghi lại hoạt động cập nhật của bảng sales . Bảng audit_log của ta sẽ chứa thông tin về user MySQL cập nhật bảng sales , date cập nhật và các giá trị sales_amount newold .

Để tạo trình kích hoạt, hãy chạy các lệnh SQL sau:

  • DELIMITER //
  • CREATE TRIGGER log_sales_updates
  • AFTER UPDATE
  • ON sales
  • FOR EACH ROW
  • Insert into audit_log(sales_id, previous_amount, new_amount, updated_by, updated_on) VALUES (NEW.sales_id,OLD.sales_amount, NEW.sales_amount,(SELECT USER()), NOW() )//
  • DELIMITER ;

Bạn chèn một bản ghi mới vào bảng audit_log . Bạn sử dụng từ khóa NEW để truy xuất giá trị của sales_idsales_amount mới. Ngoài ra, bạn sử dụng từ khóa OLD để truy xuất sales_amount trước đó vì bạn muốn ghi lại cả hai số tiền cho mục đích kiểm tra.

Lệnh SELECT USER() truy xuất user hiện tại thực hiện thao tác và câu lệnh NOW() lấy giá trị của ngày và giờ hiện tại từ server MySQL.

Bây giờ nếu user cố gắng cập nhật giá trị của bất kỳ bản ghi nào trong bảng sales , trình kích hoạt log_sales_updates sẽ chèn một bản ghi mới vào bảng audit_log .

Hãy tạo một bản ghi bán hàng mới với sales_id ngẫu nhiên là 5 và cố gắng cập nhật nó. Đầu tiên, hãy chèn profile bán hàng với:

  • Insert into sales(sales_id, customer_id, sales_amount) values('5', '2','8000');
Output
Query OK, 1 row affected (0.00 sec) 

Tiếp theo, cập nhật bản ghi:

  • Update sales set sales_amount='9000' where sales_id='5';

Bạn sẽ thấy kết quả sau:

Output
Rows matched: 1  Changed: 1  Warnings: 0 

Bây giờ hãy chạy lệnh sau để xác minh xem trình kích hoạt AFTER UPDATE có thể đăng ký một bản ghi mới vào bảng audit_log :

  • Select * from audit_log;

Trình kích hoạt ghi lại bản cập nhật. Kết quả kết quả của bạn hiển thị sales_amount trước đó và new amount đăng ký với user đã cập nhật profile :

Output
+--------+----------+-----------------+------------+----------------+---------------------+ | log_id | sales_id | previous_amount | new_amount | updated_by     | updated_on          | +--------+----------+-----------------+------------+----------------+---------------------+ |      1 |        5 |            8000 |       9000 | root@localhost | 2019-11-07 09:28:36 | +--------+----------+-----------------+------------+----------------+---------------------+ 1 row in set (0.00 sec) 

Bạn cũng có ngày và giờ thực hiện cập nhật, có giá trị cho mục đích kiểm tra.

Tiếp theo, bạn sẽ sử dụng trình kích hoạt DELETE để thực thi tính toàn vẹn của tham chiếu ở cấp database .

Bước 6 - Tạo trước khi xóa kích hoạt

BEFORE DELETE hoạt BEFORE DELETE gọi trước khi câu lệnh DELETE thực thi trên bảng. Những loại trình kích hoạt này thường được sử dụng để thực thi tính toàn vẹn của tham chiếu trên các bảng có liên quan khác nhau. Ví dụ: mỗi bản ghi trên bảng sales liên quan đến một customer_id từ bảng customers . Nếu user database xóa bản ghi khỏi bảng customers có bản ghi liên quan trong bảng sales , bạn sẽ không có cách nào để biết khách hàng được liên kết với bản ghi đó.

Để tránh điều này, bạn có thể tạo một trình kích hoạt BEFORE DELETE để thực thi logic của bạn. Chạy lần lượt các lệnh SQL sau:

  • DELIMITER //
  • CREATE TRIGGER validate_related_records
  • BEFORE DELETE
  • ON customers
  • FOR EACH ROW
  • IF OLD.customer_id in (select customer_id from sales) THEN
  • SIGNAL SQLSTATE '45000'
  • SET MESSAGE_TEXT = 'The customer has a related sales record.';
  • END IF//
  • DELIMITER ;

Bây giờ, hãy thử xóa một khách hàng có profile bán hàng liên quan:

  • Delete from customers where customer_id='2';

Kết quả là bạn sẽ nhận được kết quả sau:

Output
ERROR 1644 (45000): The customer has a related sales record. 

Trình kích hoạt BEFORE DELETE có thể ngăn việc vô tình xóa thông tin liên quan trong database .

Tuy nhiên, trong một số tình huống, bạn có thể cần xóa tất cả các bản ghi được liên kết với một bản ghi cụ thể khỏi các bảng có liên quan khác nhau. Trong tình huống này, bạn sẽ sử dụng trình kích hoạt AFTER DELETE , mà bạn sẽ kiểm tra trong bước tiếp theo.

Bước 7 - Tạo sau khi xóa kích hoạt

AFTER DELETE trình kích hoạt được kích hoạt khi một bản ghi đã được xóa thành công. Ví dụ về cách bạn có thể sử dụng trình kích hoạt AFTER DELETE là một tình huống trong đó mức chiết khấu mà một khách hàng cụ thể nhận được được xác định bởi số lần bán hàng được thực hiện trong một khoảng thời gian xác định. Nếu một số bản ghi của khách hàng bị xóa khỏi bảng sales , thì mức chiết khấu của khách hàng cần được hạ cấp.

Một cách sử dụng khác của trình kích hoạt AFTER DELETE là xóa thông tin liên quan khỏi bảng khác sau khi bản ghi từ bảng cơ sở bị xóa. Ví dụ: bạn sẽ đặt trình kích hoạt xóa profile khách hàng nếu profile bán hàng có customer_id liên quan bị xóa khỏi bảng sales . Chạy lệnh sau để tạo trình kích hoạt của bạn:

  • DELIMITER //
  • CREATE TRIGGER delete_related_info
  • AFTER DELETE
  • ON sales
  • FOR EACH ROW
  • Delete from customers where customer_id=OLD.customer_id;//
  • DELIMITER ;

Tiếp theo, hãy chạy phần sau để xóa tất cả profile bán hàng được liên kết với customer_id2 :

  • Delete from sales where customer_id='2';
Output
Query OK, 1 row affected (0.00 sec) 

Bây giờ hãy kiểm tra xem có bản ghi cho khách hàng từ bảng sales :

  • Select * from customers where customer_id='2';

Bạn sẽ nhận được kết quả Empty Set vì bản ghi khách hàng được liên kết với customer_id của 2 đã bị trình kích hoạt xóa:

Output
Empty set (0.00 sec) 

Đến đây bạn đã sử dụng từng dạng trình kích hoạt khác nhau để thực hiện các chức năng cụ thể. Tiếp theo, bạn sẽ thấy cách bạn có thể xóa một trình kích hoạt khỏi database nếu bạn không cần nó nữa.

Bước 8 - Xóa trình kích hoạt

Tương tự với bất kỳ đối tượng database nào khác, bạn có thể xóa trình kích hoạt bằng lệnh DROP . Sau đây là cú pháp để xóa trình kích hoạt:

Drop trigger [TRIGGER NAME]; 

Ví dụ: để xóa trình kích hoạt AFTER DELETE cuối cùng mà bạn đã tạo, hãy chạy lệnh sau:

  • Drop trigger delete_related_info;
Output
Query OK, 0 rows affected (0.00 sec) 

Nhu cầu xóa trình kích hoạt phát sinh khi bạn muốn tạo lại cấu trúc của nó. Trong trường hợp như vậy, bạn có thể bỏ trình kích hoạt và xác định lại trình kích hoạt mới bằng các lệnh kích hoạt khác nhau.

Kết luận

Trong hướng dẫn này, bạn đã tạo, sử dụng và xóa các loại trình kích hoạt khác nhau khỏi database MySQL. Sử dụng database mẫu liên quan đến khách hàng mà bạn đã triển khai các trình kích hoạt cho các trường hợp sử dụng khác nhau như xác thực dữ liệu, ứng dụng logic nghiệp vụ, ghi log kiểm tra và thực thi tính toàn vẹn tham chiếu.

Để biết thêm thông tin về cách sử dụng cơ sở dữ liệu MySQL của bạn, hãy xem phần sau:


Tags:

Các tin liên quan

Cách tạo một ứng dụng trích dẫn đầy cảm hứng bằng AdonisJs và MySQL
2019-11-22
Cách cài đặt MySQL mới nhất trên Debian 10
2019-07-25
Cách triển khai ứng dụng cốt lõi ASP.NET với server MySQL bằng Nginx trên Ubuntu 18.04
2019-07-23
Cách tối ưu hóa MySQL với Bộ đệm truy vấn trên Ubuntu 18.04
2019-06-12
Cách di chuyển database MySQL sang PostgreSQL bằng pgLoader
2019-05-28
Cách cấu hình SSL / TLS cho MySQL trên Ubuntu 18.04
2019-05-17
Cách thiết lập WordPress với MySQL trên Kubernetes bằng Helm
2019-05-07
Cách cho phép truy cập từ xa vào MySQL
2019-03-07
Cách sửa chữa bảng bị hỏng trong MySQL
2019-03-07
Cách khắc phục sự cố lỗi socket trong MySQL
2019-03-07