Rollback với savepoint
Tiếp nối bài tập trước: các ngân hàng có hơn 6 triệu đô trong MMDA có khả năng trụ vững gấp đôi trong suy thoái so với nhóm có từ 5 đến 6 triệu đô ở cùng loại tài sản. Ở đây mã mẫu có một lỗi và bạn cần rollback về savepoint để giữ tính toàn vẹn dữ liệu.
Bài tập này là một phần của khóa học
Giao dịch và Xử lý Lỗi trong PostgreSQL
Hướng dẫn bài tập
- Trong một giao dịch, đặt
FIELD48thành'MMDA+'khiRCON6810(số tiền MMDA) lớn hơn 6 triệu đô. - Đặt
mmdaplus_flag_setlàm savepoint. - Đặt
FIELD48thành'MMDA+'khiRCON6810(số tiền MMDA) lớn hơn 5 triệu đô (đây là lỗi). - Hoàn tác về
mmdaplus_flag_set, kết thúc giao dịch, và đếm số bản ghi'MMDA+'.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
BEGIN;
-- Set the flag to MMDA+ where the value is greater than $6 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where RCON6810 > 6000000;
-- Set a Savepoint
___ mmdaplus_flag_set;
-- Mistakenly set the flag to MMDA+ where the value is greater than $5 million
UPDATE ffiec_reci set FIELD48 = 'MMDA+' where ___ > 5000000;
-- Rollback to savepoint
___ TO ___;
COMMIT;
-- Select count of records where the flag is MMDA+
SELECT count(FIELD48) from ffiec_reci where FIELD48 = 'MMDA+';