Truy vấn đồng bộ hóa trong PostgreSQL đề cập đến khả năng thực thi các truy vấn và nhận kết quả trong cùng một ngữ cảnh, đảm bảo rằng dữ liệu luôn nhất quán và chính xác. Điều này đặc biệt quan trọng trong các ứng dụng yêu cầu tính nhất quán cao, như trong các giao dịch tài chính hoặc hệ thống quản lý kho. Bài viết này sẽ hướng dẫn bạn cách thực hiện truy vấn đồng bộ hóa trong PostgreSQL.
Trong PostgreSQL, truy vấn đồng bộ hóa thường được thực hiện trong ngữ cảnh của giao dịch. Một giao dịch cho phép bạn thực hiện một hoặc nhiều truy vấn SQL một cách đồng bộ, đảm bảo rằng tất cả các thay đổi được thực hiện thành công trước khi xác nhận.
Để thực hiện truy vấn đồng bộ hóa, bạn sẽ sử dụng các lệnh BEGIN
, COMMIT
, và ROLLBACK
để quản lý giao dịch. Dưới đây là một ví dụ cơ bản:
Bắt đầu một giao dịch bằng cách sử dụng lệnh BEGIN
:
BEGIN;
Thực hiện các truy vấn SQL mà bạn muốn. Ví dụ, bạn có thể chèn một bản ghi và cập nhật một bản ghi khác:
INSERT INTO orders (customer_id, order_date) VALUES (1, NOW()); UPDATE inventory SET stock = stock - 1 WHERE product_id = 100;
Nếu tất cả các truy vấn đều thành công, bạn có thể xác nhận giao dịch bằng cách sử dụng lệnh COMMIT
:
COMMIT;
Nếu có lỗi xảy ra trong quá trình thực hiện truy vấn, bạn có thể sử dụng lệnh ROLLBACK
để hoàn tác tất cả các thay đổi đã thực hiện trong giao dịch:
ROLLBACK;
Giả sử bạn có bảng customers
, orders
, và inventory
, và bạn muốn tạo một đơn hàng cho một khách hàng và cập nhật tồn kho. Dưới đây là cách thực hiện truy vấn đồng bộ hóa:
BEGIN; -- Thêm một khách hàng mới INSERT INTO customers (name, email) VALUES ('John Doe', '[email protected]'); -- Tạo một đơn hàng mới cho khách hàng đó INSERT INTO orders (customer_id, order_date) VALUES (currval('customers_id_seq'), NOW()); -- Cập nhật tồn kho sản phẩm UPDATE inventory SET stock = stock - 1 WHERE product_id = 1; -- Xác nhận giao dịch COMMIT;
Nếu bất kỳ truy vấn nào ở trên gặp lỗi, bạn có thể hoàn tác tất cả các thay đổi:
ROLLBACK;
PostgreSQL hỗ trợ nhiều cấp độ cô lập cho giao dịch, ảnh hưởng đến cách dữ liệu được nhìn thấy giữa các giao dịch khác nhau. Các cấp độ cô lập chính bao gồm:
Để chỉ định cấp độ cô lập, bạn có thể sử dụng cú pháp sau:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Truy vấn đồng bộ hóa trong PostgreSQL có thể được thực hiện thông qua việc sử dụng giao dịch, cho phép bạn thực hiện nhiều truy vấn một cách nhất quán và đảm bảo tính toàn vẹn của dữ liệu. Bằng cách sử dụng các lệnh BEGIN
, COMMIT
, và ROLLBACK
, bạn có thể quản lý giao dịch hiệu quả và xử lý lỗi nếu có. Hãy chắc chắn lựa chọn cấp độ cô lập phù hợp với nhu cầu của ứng dụng để đảm bảo rằng dữ liệu được xử lý chính xác và nhất quán.