Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Actualizando precios

28/33
Recursos

Aportes 19

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

No me quedo muy claro, como integro la tabla peliculas, con tipo_cambio, sin generar ningun join, como sabe que relacion tiene peliculas con tipo_cambio, seria 1 a muchos?

Código del trigger function

CREATE OR REPLACE FUNCTION public.precio_peliculas_tipo_cambio()
	returns trigger
	LANGUAGE plpgsql
AS $$
	BEGIN
INSERT INTO precio_peliculas_tipo_cambio(
pelicula_id,
tipo_cambio_id,
precio_tipo_cambio,
ultima_actualizacion
)
select  NEW.pelicula_id,
	    tipos_cambio.tipo_cambio_id,
		tipos_cambio.cambio_usd * NEW.precio_renta AS precio_tipo_cambio,
		CURRENT_TIMESTAMP
FROM tipos_cambio
WHERE tipos_cambio.codigo = 'MXN';
RETURN NEW;
	END
$$
;

Código del trigger en la tabla precio_peliculas_tipo_cambio

create trigger trigger_update_tipos_cambio after
insert
	or
update
	on
	public.peliculas for each row execute procedure public.precio_peliculas_tipo_cambio() ;

Esta parte me dejo muchas dudas, veo que se lanza sin mas a crear un tigger con la ayuda grafica del Pstgres. pero hay en esa nueva forma hay partes como la de public.??..hay como que se fue el curso.

Caso Práctico de Triggers

Totalmente perdido en esta clase 😕

La tuve que ver como 3 veces seguidas pero al final entendí

Para la primera parte al tratar de hacerlo por mi mismo encontré este otro query

SELECT	peliculas.pelicula_id,
		tipos_cambio.tipo_cambio_id,
		tipos_cambio.cambio_usd * peliculas.precio_renta AS precio_mxn
FROM	precio_peliculas_tipo_cambio
	INNER JOIN peliculas ON peliculas.pelicula_id = precio_peliculas_tipo_cambio.pelicula_id
	INNER JOIN tipos_cambio ON precio_peliculas_tipo_cambio.tipo_cambio_id = tipos_cambio.tipo_cambio_id
GROUP BY peliculas.pelicula_id, tipos_cambio.tipo_cambio_id
ORDER BY peliculas.pelicula_id

Me perdí en esta clase, entendí hasta antes de que empiece con los Triggers.

Esta haciendo un trigger de in trigger XD

Es interesante el desarrollo de este tipo de proyectos, pero desde lo que conozco y la teoría de normalización de las bases de datos los datos deben ser únicos y no deberíamos tener datos que puedan ser calculados, para evitar la redundancia, de igual forma existen las vistas y podríamos generar una vista que nos permita tener los datos de las monedas

-- DROP VIEW public."V_Precios_Monedas";

CREATE OR REPLACE VIEW public."V_Precios_Monedas" AS
 SELECT P.pelicula_id,
    TC.codigo,
    TC.cambio_usd * P.precio_renta AS precio_cambio
   FROM peliculas as P,
    tipos_cambio as TC;

Entendido

como puedo llenar campos vacios en postgre?

Pense que habia un error en esta consulta, ya que no existe la realación peliculas y tipo de cambio en el where. Pero entendí que el precio de renta esta dado en USD, por lo que todos los registros de la tabla peliculas se multiplican con el el mismo valor (tipo_cambio.cambio_usd)

De donde saca el tipo de cambio? es en tiempo real ?

Excelente clase, creo que no era necesario utilizar el lenguage plpgsql, con el lenguage SQL era suficiente, pero como practica esta clase me parece genial. Gracias.

interesante

En que casos será mejor este tipo de acciones que se hacen con los triggers y no una acción dentro del código de una aplicación que use esta base de datos (ej. php, python).

buen ejercicio

no quedo muy claro