Quay lui về savepoint

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

Jason Myers

Principal Engineer

Không dùng savepoint

BEGIN TRANSACTION;

UPDATE cost = 2.33 WHERE name = 'Linga';

UPDATE cost = 500 WHERE name = 'Macaron';

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

Dùng savepoint và quay lui có mục tiêu

BEGIN TRANSACTION;

UPDATE cost = 2.33 WHERE name = 'Linga';

SAVEPOINT oops;
UPDATE cost = 500 WHERE name = 'Macaron';
ROLLBACK TO oops;
Giao dịch và Xử lý Lỗi trong PostgreSQL

Giải phóng savepoint khi dùng xong

BEGIN TRANSACTION;

UPDATE cost = 2.33 WHERE name = 'Linga';
UPDATE cost = 2.33 WHERE name = 'Petit-Beurre';
UPDATE cost = 2.33 WHERE name = 'Rosette';

SAVEPOINT oops;

UPDATE cost = 5.00 WHERE name = 'Macaron';
UPDATE cost = 3.50 WHERE name = 'Panellets';
RELEASE SAVEPOINT oops;
Giao dịch và Xử lý Lỗi trong PostgreSQL

Hai lưu ý quan trọng về rollback và savepoint

  • ROLLBACK không kèm TO sẽ quay lui toàn bộ giao dịch
  • ROLLBACK TO ___ với ___ không phải tên savepoint hợp lệ sẽ gây lỗi
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...