การเลือกว่าจะ commit หรือ rollback ธุรกรรม
ธนาคารที่คุณทำงานอยู่ตัดสินใจมอบเงิน $100 ให้กับบัญชีที่มียอดคงเหลือน้อยกว่า $5,000 อย่างไรก็ตาม ผู้อำนวยการธนาคารต้องการให้เงินนี้เฉพาะในกรณีที่มีบัญชีที่มียอดน้อยกว่า $5,000 ไม่เกิน 200 บัญชีเท่านั้น
คุณจึงเตรียมสคริปต์เพื่อมอบเงิน $100 ดังกล่าว โดยเลือกวิธีการเปิดธุรกรรมแล้วอัปเดตทุกบัญชีที่มียอดคงเหลือน้อยกว่า $5,000 จากนั้นตรวจสอบจำนวนแถวที่ได้รับผลกระทบจากการอัปเดตด้วยฟังก์ชัน @@ROWCOUNT หากตัวเลขนี้มากกว่า 200 ให้ rollback ธุรกรรม มิฉะนั้นให้ commit
จะเตรียมสคริปต์นี้อย่างไร?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- เริ่มต้นธุรกรรม
- ตรวจสอบว่าจำนวนแถวที่ได้รับผลกระทบมากกว่า 200 หรือไม่
- Rollback ธุรกรรมหากจำนวนแถวที่ได้รับผลกระทบมากกว่า 200
- Commit ธุรกรรมหากจำนวนแถวที่ได้รับผลกระทบน้อยกว่าหรือเท่ากับ 200
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END