Nhiều savepoint và rollback

Giao dịch và Xử lý Lỗi trong PostgreSQL

Jason Myers

Principal Engineer

Nhiều savepoint

BEGIN TRANSACTION;

UPDATE inventory SET quantity = quantity - 1 WHERE name in ('flour', 'sugar');

SAVEPOINT inventory_step;

INSERT baking_list SET quantity=12 WHERE name='Torun';

SAVEPOINT queuing_step;

UPDATE cookies SET quantity = 12 WHERE name = 'Torun';
Giao dịch và Xử lý Lỗi trong PostgreSQL

Trùng tên savepoint

  • SAVEPOINT mới trùng tên với savepoint trước đó trong cùng giao dịch sẽ “che” savepoint cũ, không ghi đè hay giải phóng nó.
  • Nói chung, tránh tái sử dụng tên trong một giao dịch.
Giao dịch và Xử lý Lỗi trong PostgreSQL

Ví dụ trùng tên savepoint

BEGIN TRANSACTION;

UPDATE inventory SET quantity = quantity - 1 WHERE name in ('flour', 'sugar');

SAVEPOINT oops;

INSERT baking_list SET quantity=12 WHERE name='Torun';

SAVEPOINT oops;

UPDATE cookies SET quantity = 12 WHERE name = 'Torun';
Giao dịch và Xử lý Lỗi trong PostgreSQL

Hãy thực hành!

Giao dịch và Xử lý Lỗi trong PostgreSQL

Preparing Video For Download...