Cargando

Ir a contenido


 


PostgreSQL - Vistas y Ventanas

En este tutorial estaremos viendo los View (vistas) y los Window(Ventanas) que nos permiten trabajar con data de diferentes tablas bajo diferentes modalidades a forma de facilitar la consulta y simplificar los query que podamos necesitar.


Escrito por el oct 31 2013 17:34 Vistas sql postgresql


PostgreSQL es uno de los motores de bases de datos que mejor cumple los estándares de ANSI-SQL, además de eso, va más allá al ofrecer nuevas funciones y constructores que van desde simples atajos para realizar consultas, hasta elementos impensados que permiten romper los límites de lo que una instrucción SQL puede ser.

Views

Como la mayoría de bases de datos relacionales, PostgreSQL tiene soporte para las vistas, sin embargo a diferencia de SQL Server y MySQL, las vistas en PostgreSQL no son actualizables automáticamente sin no que hay que recurrir al uso de Triggers del tipo INSTEAD OF, de esta forma con el uso de TRIGGERS se adapta y es más cercano al estándar.
La ventaja de esto es que nos permite mantener un control mayor sobre las vistas y en la forma en que las tablas que proveen la información van a ser actualizadas.

Veamos en la siguiente imagen un ejemplo de cómo crear una vista en PostgreSQL utilizando sus características especiales:

pg_vistas1.jpg


Expliquemos los puntos numerados de la imagen ejemplo para que podamos tener un acercamiento al tema.
  • Maneja el borrado con la instrucción DELETE, solo borra el registro que corresponde con la misma llave del viejo registro.
  • Maneja las inserciones de datos.
  • Solo actualiza si al menos una de las columnas de la tabla facts fue cambiada.
  • Maneja las actualizaciones, utiliza el registro OLD o viejo para determinar que registros borrar o actualizar con la data del registro NEW o nuevo.
Luego podemos crear nuestro Trigger de la siguiente forma para poder vincularlo a la vista ya construida.

CREATE TRIGGER trip_01_vw_facts_ins_upd_del
INSTEAD OF INSERT OR UPDATE OR DELETE ON census.vw_facts
FOR EACH ROW EXECUTE PROCEDURE census.trig_vw_facts_ins_upd_del();


De esta forma cuando hacemos alguna inserción o modificación o borrado sobre nuestra vista, las tablas que la conforman recibirán los datos, veamos un query de ejemplo:

UPDATE census.vw_facts SET yr = 2012 WHERE yr = 2011 AND tract_id = '25027761200';

Lo que nos daría un resultado exitoso: Query returned successfully: 51 rows affected, 21 ms execution time.

Window

Las ventanas son una característica estándar ANSI-SQL soportada por PostgreSQL, esta nos permite ver y utilizar los datos que están más allá del registro actual, sin estas funciones tendríamos que estar realizado JOINS y Sub-Querys para poder obtener los datos y recursos de otra forma mucho más compleja.

El siguiente ejemplo consiste en obtener el valor average de una columna en una tabla veamos el ejemplo en la siguiente imagen:



pg_vistas2.jpg


Como pudimos observar con la función AVG nos permite obtener los valores de todos los campos sin necesidad de hacer JOINS y la función OVER nos permite convertir esto en una función Window. Así cuando PostgreSQL ve una función de este tipo va a hacer una escaneo de todas las filas que cumplan con la cláusula WHERE para obtener el resultado.

Con esto terminamos el tutorial con el que pudimos conocer un poco más como PostgreSQL maneja las funciones estándar de ANSI-SQL además de ver como agrega su propio estilo para extender la utilidad de dichas funciones.
¿Te ha gustado y ayudado este Tutorial?
Puedes premiar al autor pulsando este botón para darle un punto positivo
  • -
  • 0

Tutoriales Relacionados


2 Comentarios

:) necesito saber que son las funciones y triggers

Sergio Maldonado
nov 03 2014 22:02

:) necesito saber que son las funciones y triggers


Aqui tienes lo que pides (te recomiendo usar el buscador)

Funciones y Triggers
http://www.solvetic....nes-y-triggers/

Programación de Triggers
http://www.solvetic....on-de-triggers/

saludos!
No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!
10
VOTA
5
100%
4
0%
3
0%
2
0%
1
0%

  Información

  •   Publicado oct 31 2013 17:34
  •   Actualizado oct 31 2013 17:51
  •   Visitas 2K
  •   Nivel
    Profesional