Lấy stacked diagnostics
Stacked diagnostics có thể lấy thông điệp lỗi nội bộ của PostgreSQL và chi tiết ngoại lệ. Hãy quay lại bảng bệnh nhân và thử thêm một giá trị A1C vượt quá giới hạn kiểm tra. Việc này sẽ gây ra ngoại lệ ràng buộc kiểm tra (check constraint) mà bạn có thể bắt được. Bạn có thể dùng stacked diagnostics trong trình xử lý ngoại lệ để làm giàu bản ghi lỗi.
Bài tập này là một phần của khóa học
Giao dịch và Xử lý Lỗi trong PostgreSQL
Hướng dẫn bài tập
DECLAREhai biếnexc_messagevàexc_detailkiểu text.- Lấy ngăn xếp chẩn đoán và gán
exc_messagebằngMESSAGE_TEXTvàexc_detailbằngPG_EXCEPTION_DETAIL. - Chèn
exc_messagevàexc_detailvào các trườngmsgvàdetailcủa bảng errors.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
DO $$
-- Declare our text variables: exc_message and exc_detail
___
___ text;
exc_detail ___;
BEGIN
INSERT INTO patients (a1c, glucose, fasting)
values (20, 89, TRUE);
EXCEPTION
WHEN others THEN
-- Get the exception message and detail via stacked diagnostics
___ ___ ___
exc_message = ___,
exc_detail = ___;
-- Record the exception message and detail in the errors table
INSERT INTO errors (___, detail) VALUES (exc_message, ___);
END;
$$ language 'plpgsql';
-- Select all the errors recorded
SELECT * FROM errors;