Написання інструкцій do
Під час очищення даних часто трапляються некоректні дати. Це спричиняє виняток і зупиняє виконання SQL-інструкції. Однак, якщо використати функцію DO з обробником винятків, наша інструкція виконається до кінця. Розгляньмо, як обробити такий виняток для таблиці patients і стовпця created_on. Це також дасть змогу попрактикуватися з функцією у стилі DO.
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
- Створіть функцію
DO, щоб ініціювати перехоплення винятку. - BEGIN транзакцію, у якій ви
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;