การใช้งาน Savepoint
เพื่อนร่วมงานของคุณชื่อ Anita ต้องการความช่วยเหลือ เธอเขียนสคริปต์ที่ใช้ savepoint แต่สคริปต์ไม่ทำงานตามที่ต้องการ สคริปต์นี้จะกำหนด savepoint แรกชื่อ savepoint1 จากนั้นแทรกข้อมูลของลูกค้ารายหนึ่ง แล้วกำหนด savepoint ที่สองชื่อ savepoint2 และแทรกข้อมูลของลูกค้าอีกราย หลังจากนั้น ทั้งสอง savepoint จะถูก rollback กลับ สุดท้าย สคริปต์จะกำหนด savepoint ที่สามชื่อ savepoint3 และแทรกข้อมูลของลูกค้าอีกราย
Anita บอกว่าสคริปต์ของเธอมีข้อผิดพลาดอยู่ แต่เธอไม่แน่ใจว่าจะแก้ไขอย่างไร ช่วยเธอหน่อยได้ไหม?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- รันโค้ดเพื่อตรวจสอบว่ามีข้อผิดพลาดใดบ้าง
- แก้ไขข้อผิดพลาดทุกจุด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
BEGIN TRAN;
-- Mark savepoint1
savepoint1 SAVE TRAN;
INSERT INTO customers VALUES ('Mark', 'Davis', '[email protected]', '555909090');
-- Mark savepoint2
savepoint2 SAVE TRAN;
INSERT INTO customers VALUES ('Zack', 'Roberts', '[email protected]', '555919191');
-- Rollback savepoint2
savepoint2 ROLLBACK TRAN;
-- Rollback savepoint1
savepoint1 ROLLBACK TRAN;
-- Mark savepoint3
savepoint3 SAVE TRAN;
INSERT INTO customers VALUES ('Jeremy', 'Johnsson', '[email protected]', '555929292');
-- Commit the transaction
COMMIT TRAN;