编写 DO 语句
在清洗数据时,我们常常会遇到包含错误日期的数据。这会引发异常并中断 SQL 语句。然而,通过使用带有异常处理器的 DO 函数,语句仍可运行完成。让我们在 patients 表和 created_on 列上看看如何处理这类异常。这也将给您一个使用 DO 风格函数的机会。
本练习是课程的一部分
PostgreSQL 中的事务与错误处理
练习说明
- 创建一个
DO函数,用于开始捕获异常。 - 在事务中使用 BEGIN,并将一行(
a1c=5.8、glucose=89、fasting=TRUE、created_on= '37-03-2020 01:15:54')INSERT到 patients 表中。 - 添加一个
EXCEPTION处理器,在出错时向errors表的detail列插入'bad date'。 - 指定
'plpgsql'语言。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Create a DO $$ function
____ ____
-- BEGIN a transaction block
BEGIN
INSERT INTO patients (a1c, glucose, fasting, created_on)
VALUES (____, ____, ____, '37-03-2020 01:15:54');
-- Add an EXCEPTION
___
-- For all all other type of errors
WHEN others THEN
INSERT INTO errors (msg, detail)
VALUES ('failed to insert', '____');
END;
-- Make sure to specify the language
$$ language '____';
-- Select all the errors recorded
SELECT * FROM errors;