Escribir sentencias do
Al limpiar datos, es frecuente encontrarnos con fechas no válidas. Esto provocaría una excepción y detendría nuestra sentencia SQL; sin embargo, usando una función DO con un manejador de excepciones, nuestra sentencia podrá ejecutarse hasta el final. Veamos cómo manejar ese tipo de excepción con la tabla patients y la columna created_on. Esto también nos dará la oportunidad de usar una función de estilo DO.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Crea una función
DOpara empezar a capturar una excepción. - BEGIN una transacción en la que hagas
INSERTde la fila (a1c=5.8,glucose=89,fasting=TRUEycreated_on= '37-03-2020 01:15:54') en patients. - Añade un manejador
EXCEPTIONque, en caso de error, inserte'bad date'en la columnadetailde la tablaerrors. - Especifica el lenguaje
'plpgsql'.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- 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;