PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres có hỗ trợ các giao dịch lồng ghép hoặc tự trị không?

Postgres không hỗ trợ các giao dịch lồng nhau, nhưng chúng khác với SQL thông thường, giống như các giao dịch với các điểm từng phần được lồng vào nhau.

Ở cấp cao nhất, bạn luôn có BEGIN/COMMIT/ROLLBACK điển hình của mình và ở các mức lồng nhau, bạn phải sử dụng các lệnh sau:

  • SAVEPOINT name - tạo một điểm lưu mới, với tên duy nhất cho giao dịch
  • RELEASE SAVEPOINT name - cam kết điểm lưu, mặc dù nó sẽ chỉ tồn tại nếu giao dịch chứa cam kết
  • ROLLBACK TO SAVEPOINT name - quay trở lại điểm lưu

Bạn cũng phải đảm bảo rằng:

  • Các tên được sử dụng cho mỗi SAVEPOINT là duy nhất;
  • Không thành công trong một SAVEPOINT được truyền lên cấp cao nhất.

Phần cuối cùng là một chút phức tạp, trừ khi bạn sử dụng một thư viện có thể tự động làm điều đó cho bạn.

Khi tôi viết pg-promise, tôi đã đảm bảo rằng hai điều khoản đó được đảm bảo:

  • Nó tự động tạo tên điểm lưu, dưới dạng level_1 , level_2 , v.v., dựa trên cấp độ giao dịch;
  • Nó thực thi có chứa tên ROLLBACK TO SAVEPOINT name , cộng với ROLLBACK cấp cao nhất trong trường hợp giao dịch con không thành công - tất cả đều được xây dựng dựa trên logic chuỗi lời hứa tiêu chuẩn.

Xem thêm các hạn chế của các giao dịch lồng nhau PostgreSQL được giải thích ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khai thác tối đa chỉ mục PostgreSQL của bạn

  2. Lượt xem danh sách PostgreSQL

  3. Đo điểm chuẩn Giải pháp đám mây PostgreSQL được quản lý:Phần thứ hai - Amazon RDS

  4. Sửa đổi giá trị bắt đầu Django AutoField

  5. Postgres UUID JDBC không hoạt động