Managing Database Transactions | Sử dụng Transactions trong SQL

Quản lý Transactions cơ sở dữ liệu (Database Transactions) là một khía cạnh quan trọng trong SQL và các hệ quản trị cơ sở dữ liệu (DBMS). Transactions là một đơn vị công việc bao gồm một hoặc nhiều thao tác SQL, thực hiện các thay đổi dữ liệu trong cơ sở dữ liệu. Tất cả các thao tác trong một Transactions phải hoàn thành thành công hoặc không có thay đổi nào được thực hiện (nguyên tắc “tất cả hoặc không có gì”).

Managing Database Transactions | Sử dụng Transactions trong SQL

Các tính chất của Transactions thường được gọi là ACID:

  1. Atomicity (Nguyên tử tính): Tất cả các thao tác trong Transactions phải được thực hiện hoàn toàn hoặc không có thao tác nào được thực hiện.
  2. Consistency (Nhất quán): Transactions phải chuyển cơ sở dữ liệu từ một trạng thái nhất quán này sang một trạng thái nhất quán khác.
  3. Isolation (Cô lập): Các Transactions độc lập với nhau. Các thay đổi của một Transactions không được nhìn thấy bởi các Transactions khác cho đến khi Transactions đó được hoàn thành.
  4. Durability (Bền vững): Khi một Transactions được cam kết, các thay đổi của nó sẽ được lưu trữ vĩnh viễn trong cơ sở dữ liệu, ngay cả khi có sự cố hệ thống.

Các Câu Lệnh Quản Lý Transactions

1. START TRANSACTION hoặc BEGIN TRANSACTION

Bắt đầu một Transactions mới.

BEGIN TRANSACTION;

2. COMMIT

Cam kết các thay đổi thực hiện trong Transactions, làm cho chúng trở nên vĩnh viễn.

COMMIT;

3. ROLLBACK

Hủy bỏ các thay đổi thực hiện trong Transactions, khôi phục cơ sở dữ liệu về trạng thái trước khi Transactions bắt đầu.

ROLLBACK;

4. SAVEPOINT

Tạo một điểm lưu trong Transactions để có thể quay lại nếu cần thiết.

SAVEPOINT savepoint_name;

5. ROLLBACK TO SAVEPOINT

Quay lại điểm lưu trong Transactions mà không hủy bỏ toàn bộ Transactions.

ROLLBACK TO SAVEPOINT savepoint_name;

VÍ DỤ SỬ DỤNG TRANSACTIONS

Ví Dụ 1: Transactions cơ bản

Cập nhật lương của một nhân viên và thêm một bản ghi vào bảng lịch sử Transactions.

BEGIN TRANSACTION;
UPDATE employees
SET salary = salary * 1.10
WHERE employee_id = 101;
INSERT INTO salary_history (employee_id, change_date, old_salary, new_salary)
VALUES (101, CURRENT_DATE, 5000, 5500);
COMMIT;

Ví Dụ 2: Transactions với SAVEPOINT

Cập nhật lương của hai nhân viên và quay lại điểm lưu nếu cập nhật thứ hai thất bại.

BEGIN TRANSACTION;
UPDATE employees
SET salary = salary * 1.10
WHERE employee_id = 101;

SAVEPOINT sp1;

UPDATE employees
SET salary = salary * 1.20
WHERE employee_id = 102;

-- Giả sử có lỗi xảy ra ở đây
ROLLBACK TO SAVEPOINT sp1;
COMMIT;

Tóm lại là:

  • BEGIN TRANSACTION: Bắt đầu một Transactions mới.
  • COMMIT: Cam kết các thay đổi, làm cho chúng trở nên vĩnh viễn.
  • ROLLBACK: Hủy bỏ các thay đổi, khôi phục về trạng thái trước Transactions.
  • SAVEPOINT: Tạo một điểm lưu để có thể quay lại nếu cần.
  • ROLLBACK TO SAVEPOINT: Quay lại điểm lưu mà không hủy bỏ toàn bộ Transactions.

Transactions trong cơ sở dữ liệu giúp đảm bảo tính toàn vẹn và nhất quán của dữ liệu trong các hệ thống cơ sở dữ liệu, đặc biệt là trong các ứng dụng yêu cầu tính sẵn sàng và độ tin cậy cao.

Thực hành nhiều và liên tục sẽ trở nên thành thạo và Pro nhé các bạn. Chúc các bạn thành công.

 

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận