Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

Trong PostgreSQL, một giao dịch, còn được gọi là transaction, là một phiên làm việc đặc biệt. Trong giao dịch, nhiều câu lệnh SQL có thể được thực hiện đồng thời. Tuy nhiên, nếu có bất kỳ vấn đề hoặc lỗi nào xảy ra trong quá trình thực hiện giao dịch, bạn có thể sử dụng lệnh ROLLBACK để hủy bỏ tất cả các thay đổi đã được thực hiện trong giao dịch đó. Kết quả là, dữ liệu trong cơ sở dữ liệu không bị ảnh hưởng hoặc thay đổi.

Transaction đảm bảo tính toàn vẹn của dữ liệu bằng cách đảm bảo rằng hoặc tất cả các thay đổi trong giao dịch đều được áp dụng thành công hoặc không có thay đổi nào được áp dụng. Điều này giúp đảm bảo rằng dữ liệu luôn ở trạng thái đáng tin cậy và nhất quán.

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', '[email protected]'),
(6, 1, 'PhatML', '123456', '[email protected]'),
(7, 1, 'Myttt', '123456', '[email protected]');
COMMIT;

BEGIN TRANSACTION;
INSERT INTO public.users(user_id, group_id, username, password, email, created_at)
VALUES 
(8, 1, 'HangNT', '123456', '[email protected]', '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

Câu lệnh SQL bị lỗi và giao dịch đang trong trạng thái không hoàn thành. Sử dụng lệnh ROLLBACK để hủy bỏ giao dịch hiện tại.

Trả lời

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 *