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

การ Rollback ด้วย Savepoint

ต่อเนื่องจากแบบฝึกหัดที่แล้ว พบว่าธนาคารที่มี MMDA มากกว่า 6 ล้านดอลลาร์มีโอกาสรอดพ้นจากภาวะถดถอยสูงกว่าธนาคารที่มี MMDA ระหว่าง 5 ถึง 6 ล้านดอลลาร์ถึงสองเท่า โค้ดตัวอย่างนี้มีข้อผิดพลาดอยู่ ต้องทำการ rollback ไปยัง savepoint เพื่อรักษาความถูกต้องของข้อมูล

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

Transactions and Error Handling in PostgreSQL

ดูคอร์ส

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

  • ภายใน transaction ให้ตั้งค่า FIELD48 เป็น 'MMDA+' โดยมีเงื่อนไขว่า RCON6810 (จำนวนเงิน MMDA) มากกว่า 6 ล้านดอลลาร์
  • กำหนด savepoint ชื่อ mmdaplus_flag_set
  • ตั้งค่า FIELD48 เป็น 'MMDA+' โดยมีเงื่อนไขว่า RCON6810 (จำนวนเงิน MMDA) มากกว่า 5 ล้านดอลลาร์ (ส่วนนี้คือข้อผิดพลาด)
  • ย้อนกลับไปยัง mmdaplus_flag_set จากนั้นสิ้นสุด transaction และนับจำนวนระเบียนที่มีค่า 'MMDA+'

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

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

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