PDF de programación - PostgreSQL: Aplicaciones Avanzadas

Imágen de pdf PostgreSQL: Aplicaciones Avanzadas

PostgreSQL: Aplicaciones Avanzadasgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 1 de Octubre del 2017)
822 visualizaciones desde el 1 de Octubre del 2017
122,3 KB
17 paginas
Creado hace 18a (03/11/2005)
Vistas Actualizables

PostgreSQL: Aplicaciones Avanzadas

Álvaro Herrera

Sexto Encuentro Nacional de Linux

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

¿Qué son las vistas actualizables?

I Vistas normales
I CREATE VIEW
I Se agregan definiciones adicionales
I Permiten que se pueda “escribir” a la vista
I Los cambios son pasados a las tablas que hay debajo

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Ejemplo

Situación: compañía de teléfonos, tiene una tabla de clientes y una
tabla de líneas telefónicas. Quiere tener una “tabla” donde se vean
todas las líneas y los campos del clientes al que pertenece, poder crear
nuevos clientes y líneas, y además poder modificar los datos tanto de
la línea como del cliente, usando esta vista.

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Ejemplo: Las Tablas

Tabla «public.clientes»

Modificadores
not null default nextval(’clientes_cliente_id_seq’)
not null

Tipo
integer
text

Columna
cliente_id
nombre
Índices:
«clientes_pkey» PRIMARY KEY, btree (cliente_id)
cliente_id

nombre

1 Armando Aguayo
2 Bernardo Borquez
3 Carmen Carmona

(3 filas)

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Ejemplo: Las Tablas (cont.)

Tabla «public.lineas»

Tipo
integer
integer
text

Modificadores
not null default nextval(’lineas_linea_id_seq’)
not null REFERENCES clientes (cliente_id)
not null

Columna
linea_id
cliente_id
numero
Índices: «lineas_pkey» PRIMARY KEY, btree (linea_id)
linea_id
1
2
3
4

numero
555-1234
567-7654
123-1234
1-800-9999

cliente_id
1
1
2
3

(4 filas)

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

La vista

CREATE VIEW clientes_lineas AS
SELECT c.cliente_id, linea_id, nombre, numero
FROM clientes c, lineas l
WHERE c.cliente_id = l.cliente_id;

SELECT * FROM clientes_lineas;

cliente_id
1
1
2
3

(4 filas)

linea_id

nombre

1 Armando Aguayo
2 Armando Aguayo
3 Bernardo Borquez
4 Carmen Carmona

numero
555-1234
567-7654
123-1234
1-800-9999

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Inserción: Cliente Nuevo

CREATE RULE ins_clientes_lineas_nuevo AS
ON INSERT TO clientes_lineas
WHERE NEW.cliente_id IS NULL
DO INSTEAD
(

INSERT INTO clientes (nombre)

VALUES (NEW.nombre)

;

INSERT INTO lineas (cliente_id, numero)

VALUES (currval(’clientes_cliente_id_seq’),

);

NEW.numero)

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Inserción: Cliente Existente

CREATE RULE ins_cliente_linea_existente AS
ON INSERT TO clientes_lineas
WHERE NEW.cliente_id IS NOT NULL
DO INSTEAD

INSERT INTO lineas (cliente_id, numero)
VALUES (NEW.cliente_id, NEW.numero);

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Inserción: Incondicional

CREATE RULE ins_cliente_linea_nothing AS
ON INSERT TO clientes_lineas
DO INSTEAD NOTHING;

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

La Regla de Inserción: Demo

INSERT INTO clientes_lineas (nombre, numero)
VALUES (’Daniela Donoso’, ’234-4567’);

cliente_id
1
1
2
3
4

linea_id

nombre

1 Armando Aguayo
2 Armando Aguayo
3 Bernardo Borquez
4 Carmen Carmona
5 Daniela Donoso

numero
555-1234
567-7654
123-1234
1-800-9999
234-4567

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

La Regla de Inserción: Demo 2

INSERT INTO clientes_lineas (cliente_id, numero)
VALUES (3, ’987-1233’);

cliente_id
1
1
2
3
4
3

linea_id

nombre

1 Armando Aguayo
2 Armando Aguayo
3 Bernardo Borquez
4 Carmen Carmona
5 Daniela Donoso
6 Carmen Carmona

numero
555-1234
567-7654
123-1234
1-800-9999
234-4567
987-1233

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Actualización

CREATE RULE upd_clientes_lineas_cliente AS
ON UPDATE TO clientes_lineas
WHERE NEW.cliente_id IS NOT NULL
DO INSTEAD

UPDATE clientes

SET nombre = NEW.nombre

WHERE cliente_id = NEW.cliente_id;

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Actualización (cont.)

CREATE RULE upd_clientes_lineas_linea AS
ON UPDATE TO clientes_lineas
WHERE NEW.linea_id IS NOT NULL
DO INSTEAD

UPDATE lineas

SET numero = NEW.numero

WHERE linea_id = NEW.linea_id;

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Actualización (cont.)

CREATE RULE upd_clientes_lineas_nothing AS
ON UPDATE TO clientes_lineas
DO INSTEAD NOTHING;

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Actualización: Demo

UPDATE clientes_lineas

SET nombre = ’Carmen Campora’

WHERE cliente_id = 3;

cliente_id
1
1
2
3
3
4

linea_id

nombre

1 Armando Aguayo
2 Armando Aguayo
3 Bernardo Borquez
4 Carmen Campora
6 Carmen Campora
5 Daniela Donoso

numero
555-1234
567-7654
123-1234
1-800-9999
987-1233
234-4567

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Actualización: Demo 2

UPDATE clientes_lineas

SET numero = ’1-800-8888’

WHERE linea_id = 4;

cliente_id
1
1
2
3
3
4

linea_id

nombre

1 Armando Aguayo
2 Armando Aguayo
3 Bernardo Borquez
4 Carmen Campora
6 Carmen Campora
5 Daniela Donoso

numero
555-1234
567-7654
123-1234
1-800-8888
987-1233
234-4567

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas

Vistas Actualizables

¿Qué son?
Ejemplo
Las Reglas de Inserción
Las Reglas de Actualización

Las Reglas de Actualización: Demo 3

UPDATE clientes_lineas

SET numero = ’1-800-7777’,

nombre = ’Carola Conrad’

WHERE cliente_id = 3 AND linea_id = 6;

cliente_id
1
1
2
3
3
4

linea_id

nombre

1 Armando Aguayo
2 Armando Aguayo
3 Bernardo Borquez
4 Carola Conrad
6 Carola Conrad
5 Daniela Donoso

numero
555-1234
567-7654
123-1234
1-800-8888
1-800-7777
234-4567

Álvaro Herrera

PostgreSQL: Aplicaciones Avanzadas
  • Links de descarga
http://lwp-l.com/pdf7111

Comentarios de: PostgreSQL: Aplicaciones Avanzadas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad