PostgreSQL – Afirmar

PostgreSQL proporciona la instrucción ASSERT para insertar comprobaciones de depuración importantes en el código PL/pgSQL. Es una herramienta importante para comprobar errores lógicos y puede usarse para identificar problemas asociados con el código escrito.

Syntax: assert condition [, message];  

Si analizamos la sintaxis anterior:

  • condición: la condición es una expresión booleana que se supone que devuelve verdadero. 
    Si la condición devuelve verdadero, la declaración de afirmación no hace nada y el programa continúa ejecutándose.
    Sin embargo, si la condición se evalúa como falsa o nula, se genera una excepción ASSERT_FAILURE
    (Si encontramos un error al evaluar la condición, se informa como un error normal).
     
  • mensaje: el mensaje es una parte opcional que es una expresión cuyo resultado (si no es nulo) reemplaza el texto del mensaje de error predeterminado «afirmación fallida», en caso de que la condición falle. La expresión del mensaje solo se evalúa en caso de que la afirmación falle y no se evalúa en el caso normal en el que la afirmación tiene éxito.

Es importante tener en cuenta que ASSERT está diseñado para detectar errores del programa, no para informar sobre condiciones de error ordinarias. En el caso de reportar errores, se debe usar la palabra clave RAISE.

Primero, creamos una tabla de muestra usando los siguientes comandos para realizar ejemplos:

CREATE TABLE employees (
  employee_id serial PRIMARY KEY,
  full_name VARCHAR NOT NULL,
  manager_id INT
);

Luego insertamos datos en nuestra tabla de empleados de la siguiente manera:

INSERT INTO employees (
  employee_id,
  full_name,
  manager_id
)
VALUES
  (1, 'M.S Dhoni', NULL),
  (2, 'Sachin Tendulkar', 1),
  (3, 'R. Sharma', 1),
  (4, 'S. Raina', 1),
  (5, 'B. Kumar', 1),
  (6, 'Y. Singh', 2),
  (7, 'Virender Sehwag ', 2),
  (8, 'Ajinkya Rahane', 2),
  (9, 'Shikhar Dhawan', 2),
  (10, 'Mohammed Shami', 3),
  (11, 'Shreyas Iyer', 3),
  (12, 'Mayank Agarwal', 3),
  (13, 'K. L. Rahul', 3),
  (14, 'Hardik Pandya', 4),
  (15, 'Dinesh Karthik', 4),
  (16, 'Jasprit Bumrah', 7),
  (17, 'Kuldeep Yadav', 7),
  (18, 'Yuzvendra Chahal', 8),
  (19, 'Rishabh Pant', 8),
  (20, 'Sanju Samson', 8);

La mesa es:

Ejemplo 1:

La siguiente consulta se utiliza para verificar si nuestra tabla tiene uno o más de 1 registro.

do $$
declare  
 employee_count integer;
begin
 select count(*)
 into employee_count
 from employees;
 assert employee_count > 0, 'Check for Empty Employee Table';
end$$;

Producción:

Como el tamaño de la tabla es mayor que 0, la afirmación es verdadera y, por lo tanto, no se imprime nada como mensaje de error.

Ejemplo 2:

La siguiente consulta se utiliza para verificar si nuestra tabla tiene uno o más de 100 registros.

do $$
declare  
 employee_count integer;
begin
 select count(*)
 into employee_count
 from employees;
 assert employee_count > 100, '100 employee count found';
end$$;

Producción:

Como el tamaño de la tabla es inferior a 100, la aserción falla y, por lo tanto, se imprime un mensaje de error.

Publicación traducida automáticamente

Artículo escrito por ashutoshrathi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *