การ Rollback หลายคำสั่งพร้อมกัน
คราวนี้มาลองใช้หลายคำสั่งในบล็อก transaction เพื่อตั้งค่าแฟล็กใน FIELD48 โดยอ้างอิงจากประเภทสินทรัพย์ที่ถืออยู่ ได้แก่ สินทรัพย์รัฐบาลระดับรัฐของสหรัฐฯ ที่แสดงใน RCON2203, สินทรัพย์ต่างประเทศที่แสดงใน RCON2236, หรือทั้งสองอย่าง โดยค่าของ FIELD48 ควรเป็น 'US-STATE-GOV', 'FOREIGN', หรือ 'BOTH' ตามลำดับ แต่มีข้อผิดพลาดเกิดขึ้นในคำสั่งสำหรับกรณีทั้งสอง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in PostgreSQL
คำแนะนำการฝึกหัด
- สร้างคำสั่ง UPDATE 3 คำสั่งเพื่อตรวจจับแต่ละเงื่อนไขและตั้งค่าแฟล็กให้ถูกต้อง
- แก้ไขข้อผิดพลาดที่ตั้งค่าเป็น
'BOOTH'แทนที่จะเป็น'BOTH'โดยการ rollback transaction - Select จำนวนระเบียนที่มีแฟล็กถูกตั้งค่าเป็น
'BOOTH'
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Begin a new transaction
BEGIN;
-- Update FIELD48 flag status if US State Government deposits are held
UPDATE ffiec_reci
SET ___ = 'US-STATE-GOV'
WHERE RCON2203 > 0;
-- Update FIELD48 flag status if Foreign deposits are held
UPDATE ffiec_reci
SET FIELD48 = '___'
WHERE RCON2236 > 0;
-- Update FIELD48 flag status if US State Government and Foreign deposits are held
UPDATE ffiec_reci
SET FIELD48 = 'BOOTH'
WHERE RCON2236 > 0
AND ___ > 0;
-- Undo the mistake
___;
-- Select a count of records that are booth (it should be 0)
SELECT COUNT(FIELD48)
FROM ffiec_reci
WHERE ___ = 'BOOTH';