PostgreSQL có DDL giao dịch cho hầu hết các đối tượng cơ sở dữ liệu (chắc chắn bảng, chỉ mục, vv nhưng không phải cơ sở dữ liệu, người dùng). Tuy nhiên thực tế bất kỳ DDL sẽ nhận được một khóa ACCESS EXCLUSIVE
trên đối tượng mục tiêu, làm cho nó hoàn toàn không thể tiếp cận cho đến khi giao dịch DDL kết thúc. Ngoài ra, không phải tất cả các tình huống đều được xử lý - ví dụ, nếu bạn cố gắng chọn từ bảng foo
trong khi giao dịch khác đang xóa và tạo bảng thay thế foo
thì giao dịch bị chặn cuối cùng sẽ nhận được lỗi thay vì tìm bảng foo
mới. (Chỉnh sửa: điều này đã được sửa trong hoặc trước PostgreSQL 9.3)
CREATE INDEX ... CONCURRENTLY
là đặc biệt, nó sử dụng ba giao dịch để thêm chỉ mục vào bảng đồng thời cho phép cập nhật đồng thời.
Ngoài ra, lệnh bảo trì cơ sở dữ liệu VACUUM
không thể được sử dụng trong giao dịch.
wiki cộng đồng? – araqnid