НачатьНачать бесплатно

Написание операторов 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;
Редактировать и запускать код