Mức cô lập và giao dịch
SERIALIZABLE là một mức cô lập chụp nhanh bản ghi tại thời điểm câu lệnh truy vấn hoặc cập nhật đầu tiên được thực thi và sẽ báo lỗi nếu dữ liệu bị thay đổi theo bất kỳ cách nào bên ngoài giao dịch. Lưu ý rằng giao dịch có thể thực hiện các công việc khác, như khai báo biến, trước truy vấn đầu tiên.
Bạn sẽ tiếp tục dùng bộ dữ liệu FFIEC để làm việc với dữ liệu mà biến động hàng năm của khoản tiền gửi tiết kiệm RCON0352 bị ảnh hưởng bởi một giá trị bù lớn.
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 ở chế độ
SERIALIZABLE. - Cập nhật tất cả bản ghi có
RCON0352lớn hơn 100.000 bằng cách giảm 50%. COMMITgiao dịch.- Chọn số lượng bản ghi vẫn còn
RCON0352lớn hơn 100.000.
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 a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;