เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ระดับ Isolation และ Transaction

SERIALIZABLE คือระดับ isolation ที่จะถ่ายภาพ snapshot ของข้อมูล ณ ขณะที่มีการออก query หรือคำสั่ง update ครั้งแรก และจะเกิด error หากข้อมูลถูกเปลี่ยนแปลงจากภายนอก transaction ไม่ว่าในกรณีใดก็ตาม ทั้งนี้ transaction ยังคงสามารถทำงานอื่นได้ก่อน เช่น การประกาศตัวแปร ก่อนที่จะมีการออก query ครั้งแรก

ในแบบฝึกหัดนี้จะใช้ชุดข้อมูล FFIEC อีกครั้ง เพื่อทำงานกับข้อมูลที่การเปลี่ยนแปลงรายปีของเงินฝากออมทรัพย์ RCON0352 ได้รับผลกระทบจาก offset ขนาดใหญ่

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Transactions and Error Handling in PostgreSQL

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เริ่มต้น transaction ในโหมด SERIALIZABLE
  • Update ระเบียนทั้งหมดที่ RCON0352 มีค่ามากกว่า 100,000 โดยลดลง 50%
  • COMMIT transaction
  • Select จำนวนระเบียนที่ยังคงมีค่า RCON0352 มากกว่า 100,000

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

-- 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;
แก้ไขและรันโค้ด