Danh sách Tutorial

[PostgreSQL] Sử dụng Transactions trong PostgreSQL


Một transaction trong PostgreSQL là một giao dịch (phiên làm việc) xử lý tổ hợp nhiều lệnh SQL cùng một lúc. Nếu chương trình có vấn đề hoặc lỗi trong xử lý nó sẽ gọi ROLLBACK để hủy quá trình thực hiện. Lúc đó dữ liệu trong database sẽ không thay đổi.

Transaction đảm bảo tính toàn vẹn của dữ liệu.

Các lệnh trong PostgreSQL Transactions

Các lệnh sau được sử dụng để kiểm soát các giao dịch –

  • BEGIN TRANSACTION – Để bắt đầu một Transaction
  • COMMIT – Để lưu các thay đổi vào database, hoặc bạn có thể sử dụng lệnh END TRANSACTION.
  • ROLLBACK – Hủy transaction và không thay đổi dữ liệu trong database.

Transaction chỉ được sử dụng với các lệnh DML là: INSERT, UPDATE, DELETE.

Sử dụng PostgreSQL Transaction

Để bắt đầu một transaction sử dụng lệnh:

BEGIN TRANSACTION;
-- Hoặc
BEGIN:

Để hoàn thành một transaction sử dụng lệnh:

COMMIT;
-- Hoặc
END TRANSACTION;

Để hủy một transaction

ROLLBACK;

VD 1: Ta có bảng users như sau

Thêm dữ liệu cho bảng và commit dữ liệu:

BEGIN TRANSACTION;
INSERT INTO public.users(user_id, group_id, username, password, email)
VALUES 
(5, 1, 'HieuDT', '123456', 'hieudt@gmail.com'),
(6, 1, 'PhatML', '123456', 'phatml@gmail.com'),
(7, 1, 'Myttt', '123456', 'myttt@gmail.com');
COMMIT;

BEGIN TRANSACTION;
INSERT INTO public.users(user_id, group_id, username, password, email, created_at)
VALUES 
(8, 1, 'HangNT', '123456', 'hangnt@gmail.com', '2019-12-14 00:00:05');
ROLLBACK;

Kết quả dữ liệu của bảng users sau khi sử dụng Transaction

Nếu gặp lỗi:

ERROR: current transaction is aborted, commands ignored until end of transaction block

Thì là do câu lệnh sql lỗi, transaction đang thực hiện dở dang. Chạy lệnh ROLLBACK để hủy transaction hiện tại.

 

 

 

SHARE

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web