PostgreSQL: crea vistas actualizables

Una vista puede representar un subconjunto de una tabla real, seleccionando ciertas columnas o ciertas filas de una tabla ordinaria. Podemos usarlos para restringir el acceso a la tabla original para que los usuarios puedan ver solo una parte secundaria de una tabla. La tabla a partir de la cual se crea la vista se conoce como tabla base. Puede haber vistas actualizables y no actualizables. Puede usar vistas actualizables en situaciones en las que desea que ciertos usuarios actualicen ciertas columnas de tablas específicas. Cualquier vista es actualizable si cumple con los siguientes requisitos:

  • Debe haber solo una entrada en la cláusula FROM de la consulta de definición de la vista
  • La lista de selección no debe contener ninguna función agregada como SUM, MIN, MAX, etc.
  • Las declaraciones GROUP BY, HAVING, LIMIT, OFFSET, DISTINCT, WITH, UNION, INTERSECT y EXCEPT no se pueden usar en la consulta en View.

Esto quedaría más claro con la ayuda de un ejemplo. Veamos el siguiente ejemplo. A continuación se muestra la tabla denominada «ejemplo» que contiene algunos datos básicos sobre los empleados:+

mesa originales

Sintaxis para crear la vista actualizable

CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Creación de una vista actualizable

Ahora podemos crear una vista desde el «ejemplo» de la tabla original. Una vista puede tomar una o más de una columna en la lista de selección dependiendo de cuánto acceso desee otorgar a sus usuarios. Vamos a crear una vista actualizable «mi_vista» con tres columnas id, nombre y departamento respectivamente. 

CREATE OR REPLACE VIEW my_view AS
SELECT id,name,dept from example
WHERE dept='Sales';

Output:
CREATE VIEW
Query returned successfully in 220 msec.

Consultando los resultados

Simplemente podemos ver los resultados de la vista creada simplemente ejecutando una consulta SELECT de la siguiente manera:

SELECT * from my_view; 

Salida :

mi vista

Dado que había una sola fila con el departamento como «Ventas», obtuvimos solo una fila en los resultados.

Insertar en la vista creada

Ahora intentemos realizar la operación INSERTAR en la vista creada utilizando también la siguiente sintaxis y ejemplo.

SYNTAX:
INSERT INTO view_name (column1,column2,...columnN) VALUES(Val1, val2...valN);

EXAMPLE:
INSERT INTO my_view (id,name,dept)VALUES(106,'Johnson','Health');

Ahora, si ejecutamos la consulta SELECT, no se observará ningún cambio en la vista creada y esto se debe a que el nuevo departamento que agregamos al insertar el valor es «Salud», pero al crear nuestra vista hemos mencionado «Ventas». en la cláusula WHERE, por lo que en el filtro no se observarían cambios. Sin embargo, podemos ver un cambio (una nueva fila agregada) en la tabla original.

Ahora, si ejecutamos la consulta como «SELECCIONAR * DESDE ejemplo», el resultado será el siguiente:

Tabla actualizada

Los dos cambios principales que se pueden observar aquí son: el valor «Nulo» en la última columna de la tabla y el número total de filas se incrementó en uno. Esto muestra que hemos creado con éxito una vista actualizable. Ahora veamos cómo podemos hacer algunas actualizaciones en la vista misma.

Actualización de la vista creada

También podemos actualizar la vista creada usando la siguiente sintaxis:

SYNTAX:
UPDATE view_name SET column = "New Value";

EXAMPLE:
UPDATE my_view SET dept = "Health";

OUTPUT:
UPDATE VIEW
Query returned successfully in 180 msec.

Ahora, si ejecutamos la consulta como «SELECCIONAR * DESDE ejemplo», el resultado será el siguiente:

mesa final

Los principales cambios que se pueden observar aquí son: la fila que anteriormente tenía el valor del departamento como «Ventas» se ha actualizado con el valor del departamento como «Salud». Además, se ha cambiado el orden de la fila 2, ahora se ha agregado en la última.

Así es como podemos crear y realizar operaciones en la vista actualizable.

Publicación traducida automáticamente

Artículo escrito por tanyagarg3434 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 *