การซ้อนโครงสร้าง TRY...CATCH
ต้องการลงทะเบียนผู้ซื้อรายใหม่ในตาราง buyers ผู้ซื้อรายนี้ชื่อ Peter Thomson อีเมลคือ [email protected] และหมายเลขโทรศัพท์คือ 555000100
ในฐานข้อมูลยังมีตารางชื่อ errors ซึ่งใช้สำหรับบันทึกข้อผิดพลาดแต่ละรายการ
ให้เตรียมสคริปต์ที่ตรวจจับข้อผิดพลาดที่อาจเกิดขึ้นในการแทรกข้อมูลของบุคคลนี้ และบันทึกข้อผิดพลาดเหล่านั้นลงในตาราง errors ด้วย
จะเตรียมสคริปต์นี้อย่างไร?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- ครอบคำสั่ง
INSERT INTO buyersด้วยบล็อกTRY - ครอบส่วนจัดการข้อผิดพลาดด้วยบล็อก
CATCH - ครอบคำสั่ง
INSERT INTO errorsด้วยบล็อกTRYอีกชั้นหนึ่ง - ครอบส่วนจัดการข้อผิดพลาดที่ซ้อนอยู่ด้วยบล็อก
CATCHอีกชั้นหนึ่ง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Set up the first TRY block
___ ___
INSERT INTO buyers (first_name, last_name, email, phone)
VALUES ('Peter', 'Thompson', '[email protected]', '555000100');
___ ___
-- Set up the first CATCH block
___ ___
SELECT 'An error occurred inserting the buyer! You are in the first CATCH block';
-- Set up the nested TRY block
___ ___
INSERT INTO errors
VALUES ('Error inserting a buyer');
SELECT 'Error inserted correctly!';
___ ___
-- Set up the nested CATCH block
___ ___
SELECT 'An error occurred inserting the error! You are in the nested CATCH block';
___ ___
___ ___