Sử dụng mức cô lập (isolation level)
Như bạn đã thấy trong video, đôi khi cần chọn mức cô lập cho từng giao dịch riêng lẻ. Cách tốt nhất là dùng START TRANSACTION (bí danh của BEGIN TRANSACTION) để làm rõ rằng có điều gì đó khác biệt. Bạn có thể chỉ định ISOLATION LEVEL khi bắt đầu giao dịch.
Ở đây, chúng ta sẽ dùng REPEATABLE READ, mức bảo vệ bạn khỏi dirty reads, nonrepeatable reads và phantom reads. Trong dữ liệu FFEIC, RCON2210 là trường tiền gửi thanh toán (demand deposits), theo dõi toàn bộ tài khoản séc đang lưu hành, séc do ngân hàng phát hành và các khoản ghi có chưa hạch toán. Chúng có thể trở thành nghĩa vụ của ngân hàng nếu có tình huống rút tiền ồ ạt. Hãy tìm tất cả các ngân hàng có tiền gửi thanh toán trên $100,000,000.
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
- Bắt đầu một giao dịch với repeatable read.
- Chọn tất cả bản ghi có
RCON2210lớn hơn $100,000,000 trong tiền gửi thanh toán. - Tiếp tục chọn tất cả bản ghi có
RCON2210vẫn lớn hơn $100,000,000 trong tiền gửi thanh toán. - Commit giao dịch.
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.
-- Create a new transaction with an isolation level of repeatable read
___ TRANSACTION ___ LEVEL ___ ___;
-- Count of records over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Count of records still over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Commit the transaction
___;