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:
- Một server Ubuntu 18.04 được cài đặt theo Cài đặt server ban đầu với Ubuntu 18.04 , bao gồm cả user không phải root có quyền sudo .
- Database MySQL đang chạy trên server của bạn bằng cách sau: Cách cài đặt MySQL trên Ubuntu 18.04
- Thông tin đăng nhập account user root cho database MySQL của bạn.
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;
Query OK, 1 row affected (0.00 sec)
Tiếp theo, chuyển sang test_db
với:
- Use test_db;
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_name
và level
. Sẽ có hai cấp độ khách hàng: BASIC
và VIP
.
- Create table customers(customer_id BIGINT PRIMARY KEY, customer_name VARCHAR(50), level VARCHAR(50) ) ENGINE=INNODB;
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
:
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;
+-------------+---------------+-------+ | 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_id
và status_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;
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;
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
, UPDATE
và DELETE
. 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 OLD
và NEW
để truy cập các giá trị cột cũ và mới được nhập trong thao tác INSERT
, UPDATE
và DELETE
. 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_amount
là 11000
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');
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:
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:
+----------+-------------+--------------+ | 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 ;
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');
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;
+-------------+-----------------------------+ | 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
:
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';
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
new
và old
.
Để 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_id
và sales_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');
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:
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 :
+--------+----------+-----------------+------------+----------------+---------------------+ | 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:
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_id
là 2
:
- Delete from sales where customer_id='2';
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:
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;
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:
- Cách tối ưu hóa MySQL với Cache truy vấn trên Ubuntu 18.04
- Cách triển khai phân trang trong MySQL với PHP trên Ubuntu 18.04
- Cách khắc phục sự cố trong MySQL
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à MySQL2019-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