处理异常
在幻灯片中,我们讨论了为问题的解决提供恰当的上下文。记录消息时,经常被忽视的一点是更深层的原因。很多时候,错误信息很泛,比如 "Bad value" 或 "Invalid date"。不过,我们可以通过细节和上下文来丰富这些消息。
这里我们将处理 A1C,它表示带有葡萄糖附着在血红蛋白上的红细胞所占的百分比。通常,未受影响患者的空腹范围低于 5.7%,5.7% 到 6.4% 为糖尿病前期,而超过 6.5% 通常表明糖尿病未得到良好控制。
本练习是课程的一部分
PostgreSQL 中的事务与错误处理
练习说明
- 通过在适当位置填写
DO和BEGIN语句,完成事务块。 - 添加一个异常,将
'a1c is typically less than 14'插入到errors表的context列中。 - 通过指定所用的过程式语言来结束该异常。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Add a DO function
___ $$
-- BEGIN a transaction block
___
INSERT INTO patients (a1c, glucose, fasting)
values (20, 89, TRUE);
-- Add an EXCEPTION
____
-- Catch all exception types
WHEN others THEN
INSERT INTO errors (msg, detail, ___) VALUES
(
'failed to insert',
'This a1c value is higher than clinically accepted norms.',
'___'
);
END;
-- Make sure to specify the language
____ language 'plpgsql';
-- Select all the errors recorded
SELECT * FROM errors;