โครงสร้างของข้อผิดพลาดและข้อผิดพลาดที่ไม่สามารถดักจับได้

Transactions and Error Handling in SQL Server

Miriam Antona

Software Engineer

โครงสร้างของข้อผิดพลาด

INSERT INTO products (product_name, stock, price)
    VALUES ('Trek Powerfly 5 - 2018', 10, 3499.99);
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'unique_name'. 
Cannot insert duplicate key in object 'dbo.products'. 
The duplicate key value is (Trek Powerfly 5 - 2018).
Transactions and Error Handling in SQL Server

โครงสร้างของข้อผิดพลาด

หมายเลขข้อผิดพลาด

ข้อความแสดงข้อผิดพลาดที่ไฮไลต์ข้อความ "Msg 2627" ซึ่งตรงกับหมายเลขข้อผิดพลาด

  • ข้อผิดพลาด SQL: 1 ถึง 49999
  • ข้อผิดพลาดที่กำหนดเอง: เริ่มจาก 50001
    select * from sys.messages
| message_id | language_id | severity | ... | text                                                            |
|------------|-------------|----------|-----|-----------------------------------------------------------------|
| ...        | ...         | ...      | ... | ...                                                             |
| 2627       | 1033        | 14       | ... | Violation of %ls constraint '%.*ls'. Cannot insert duplicate... |
| ...        | ...         | ...      | ... | ...                                                             |
Transactions and Error Handling in SQL Server

โครงสร้างของข้อผิดพลาด

ระดับความรุนแรง

ข้อความแสดงข้อผิดพลาดที่ไฮไลต์ข้อความ "Level 14" ซึ่งตรงกับระดับความรุนแรงของข้อผิดพลาด

  • 0-10: ข้อความเชิงข้อมูล
  • 11-16: ข้อผิดพลาดที่ผู้ใช้แก้ไขได้ (เช่น การละเมิด constraint)
  • 17-24: ข้อผิดพลาดอื่น ๆ (ปัญหาซอฟต์แวร์ ข้อผิดพลาดร้ายแรง)
Transactions and Error Handling in SQL Server

โครงสร้างของข้อผิดพลาด

สถานะ

ข้อความแสดงข้อผิดพลาดที่ไฮไลต์ข้อความ "State 1" ซึ่งตรงกับสถานะของข้อผิดพลาด

  • 1: กรณีที่ SQL Server แสดงข้อผิดพลาด
  • 0-255: ข้อผิดพลาดที่กำหนดเอง
Transactions and Error Handling in SQL Server

โครงสร้างของข้อผิดพลาด

บรรทัด

ข้อความแสดงข้อผิดพลาดที่ไฮไลต์ข้อความ "Line 1" ซึ่งตรงกับบรรทัดที่เกิดข้อผิดพลาด

โพรซีเดอร์

ข้อความแสดงข้อผิดพลาดที่ไฮไลต์ข้อความ "Procedure Insert_product" ซึ่งตรงกับชื่อของ stored procedure ที่เกิดข้อผิดพลาด

Transactions and Error Handling in SQL Server

ข้อผิดพลาดที่ไม่สามารถดักจับได้

  • ระดับความรุนแรงต่ำกว่า 11 (11-19 ดักจับได้)

  • ระดับความรุนแรง 20 ขึ้นไปที่ตัดการเชื่อมต่อ

  • ข้อผิดพลาดการคอมไพล์: อ็อบเจกต์หรือคอลัมน์ที่ไม่มีอยู่

Transactions and Error Handling in SQL Server

ข้อผิดพลาดที่ไม่สามารถดักจับได้ - ตัวอย่างข้อผิดพลาดการคอมไพล์

BEGIN TRY
    SELECT non_existent_column FROM products;
END TRY
BEGIN CATCH
    SELECT 'You are in the CATCH block' AS message;
END CATCH
Msg 207, Level 16, State 1, Line 2
Invalid column name 'non_existent_column'.
Transactions and Error Handling in SQL Server

มาฝึกกันเถอะ!

Transactions and Error Handling in SQL Server

Preparing Video For Download...