Написание операторов DO
При очистке данных нередко встречаются записи с некорректными датами. Это вызывает исключение и прерывает выполнение SQL-запроса. Однако с помощью функции DO и обработчика исключений запрос может выполниться до конца. Давайте разберёмся, как обрабатывать подобные исключения на примере таблицы patients и столбца created_on. Заодно потренируемся использовать функцию в стиле DO.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- Создайте функцию
DO, чтобы инициировать перехват исключения. - Начните транзакцию с оператором
INSERT, который добавляет строку (a1c=5.8,glucose=89,fasting=TRUEиcreated_on= '37-03-2020 01:15:54') в таблицу patients. - Добавьте обработчик
EXCEPTION, который при возникновении ошибки вставляет значение'bad date'в столбецdetailтаблицыerrors. - Укажите язык
'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;