Cargando



PostgreSQL - Insert Avanzado

En este tutorial veremos varios de los elementos que juegan un papel fundamental cuando trabajamos con las inserciones avanzadas dentro de PostgreSQL.


oct 24 2013 22:44
Profesional
oct 24 2013 22:48
La sintaxis de PostgreSQL convive sin problemas con los estándares ANSI-SQL, a pesar de esto PostgreSQL nos permite tener varios trucos bajo la manga a la hora de hacer inserciones de datos que no están en otros manejadores de base de datos, uno de estos es el constructor de inserciones avanzado para múltiples registros.

Insert múltiple

Como veníamos explicando tenemos la posibilidad de insertar varias filas, pero veamos un ejemplo en código para poder ponernos en sintonía:


Nos podemos dar cuenta que esto funciona de una forma similar a la inserción de una sola fila utilizando INSERT VALUES() solo que podemos agregar más de un registro a la vez separando cada conjunto de registros con una coma (,).

Constraints

Los constraints en PostgreSQL son los más avanzados y complejos que se pueden encontrar en el mercado de las Bases de Datos, ya que además de crear la restricción, también permite manejar todas las facetas sobre los datos ya existentes, inclusive condiciones bajo las cuales podemos omitir el uso del constraint y violar la restricción al momento de insertar la data.

Veamos cómo tratar un constraint de llave foránea, PostgreSQL permite opciones de modificaciones y borrado en cascada cuando utilizamos los constraints.

En este ejemplo utilizaremos varias cosas de forma demostrativa.

pg_insert_avz2.jpg



1. En este primer constraint, definimos una relación de llave foránea entre la tabla facts y la tabla fact_types, de forma de prevenir la introducción de elementos que no están ya presentes en la tabla fact_types.


2. También definimos una regla en cascada que automáticamente actualiza la tabla fact el campo fact_type_id en caso que se re-enumere algún registro de la tabla fact_types, adicionalmente restringimos el borrado si alguno de los valores están en uso.


3. A diferencia del comportamiento de la llave primaria y los constraints únicos, PostgreSQL no añade automáticamente un index de una llave foránea, esto lo debemos hacer por cuentas propias.


Constraints únicas

Cada tabla no puede tener más que una sola llave primaria, ahora si necesitamos tener otros campos únicos en otras columnas, debemos acudir a las constraints únicas, añadiendo esto automáticamente se crea un índice único asociado, a diferencia de una llave primaria una columna con una constraint única puede ser llenada con valores NULL, al tener una constraint única está columna que la tiene no califica para participar en una asociación de llave foránea.

Para realizar esto podemos hacerlo de la siguiente forma:

ALTER TABLE logs_2011 ADD CONSTRAINT uq_us_log UNIQUE (user_name, log_ts);


Check Constraints

Los check constraints son condiciones que un campo debe cumplir por cada fila, el planificador de query de PostgreSQL se encarga de verificar si hay un check constraint en la tabla que hace que un filtro de una condición no pueda ser cumplida, entonces este se salta la verificación de las condiciones.

Veamos cómo podemos crear un check constraint:

[size=4]ALTER TABLE logs ADD CONSTRAINT chk_lusername[/size]
[size=4]CHECK (user_name = lower(user_name));[/size]

Bien con esto finalizamos este tutorial con el cual aprendimos un poco más de las configuraciones avanzas de PostgreSQL al momento de hacer inserciones y de verificar los datos con las condiciones de los constraints.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X