Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --9. Realice un trigger que guarde un registro en la tabla histórico_equipo (codigo equipo,
- --nombre_equipo, codigo_zona, id_deporte, nombre_deporte, fecha_modificación), cada vez
- --que se actualiza el el nombre_equipo en la tabla equipo. Previamente, debe crear la tabla
- --historico_equipo sin clave primaria.
- create table historico_equipo(
- codigo_equipo integer,
- nombre_equipo varchar(20),
- codigo_zona varchar(3),
- id_deporte integer,
- nombre_deporte varchar(20),
- fecha_modificacion date
- );
- select * from historico_equipo;
- ALTER TABLE historico_equipo
- ALTER COLUMN fecha_modificacion TYPE TIMESTAMP;
- create or replace function historial()
- returns trigger as $$
- begin
- insert into historico_equipo(
- codigo_equipo,
- nombre_equipo,
- codigo_zona,
- id_deporte,
- nombre_deporte,
- fecha_modificacion
- )
- values(
- new.codigo_equipo,
- new.nombre_equipo,
- new.codigo_zona,
- new.id_deporte,
- (select nombre_deporte from deporte where id_deporte = new.id_deporte),
- current_timestamp
- );
- return new;
- end;
- $$language plpgsql;
- create trigger historial_trigger
- after update of nombre_equipo
- on equipo
- for each row
- execute function historial();
- select * from equipo;
- update equipo
- set nombre_equipo = 'new'
- where codigo_equipo = 1;
- select * from historico_equipo;
- --10. Realice un trigger que cada vez que se ingresa un nuevo registro en la tabla campeonato
- --correspondiente a la región "Puna", guarde un nuevo registro en la tabla
- --"campeonato_puna". La tabla denominada “campeonato_puna” tiene los siguientes
- --campos: “fecha_campeonato”, “nombre_equipo”, "nombre_deporte",
- --“precio_con_descuento”. El campo “fecha_campeonato” tiene como valor la fecha
- --ingresada para el campeonato, el campo “nombre_equipo” corresponde al equipo
- --ingresado, el campo "nombre_deporte" es el deporte correspondiente a ese equipo y el
- --campo “precio_con_descuento” contiene el precio de la entrada decrementado en un 10%
- create table campeonato_puna(
- fecha_campeonato date,
- nombre_equipo varchar(20),
- nombre_deporte varchar(20),
- precio_con_descuento numeric
- );
- select * from campeonato_puna;
- create or replace function champ_puna()
- returns trigger as $$
- begin
- if (select nombre_region from region
- join ciudad on region.id_region = ciudad.id_region
- where ciudad.codigo_ciudad = new.codigo_ciudad) = 'puna'then
- insert into campeonato_puna(
- fecha_campeonato,
- nombre_equipo,
- nombre_deporte,
- precio_con_descuento
- )
- values(
- new.fecha,
- (select nombre_equipo from equipo where codigo_equipo = new.codigo_equipo),
- (select nombre_deporte from deporte
- join equipo on deporte.id_deporte = equipo.id_deporte where equipo.codigo_equipo = new.codigo_equipo),
- new.precio_entradas * 0.90
- );
- end if;
- return new;
- end;
- $$language plpgsql
- create trigger camp_puna
- after insert on campeonato
- for each row
- execute function champ_puna();
- select*from region;
- insert into campeonato(codigo_equipo,codigo_ciudad,fecha,entradas_vendidas,precio_entrada)
- values(2,400,'24-06-2003',5000,56);
- select*from ciudad;
- --11. Realice un trigger que guarde un registro en la tabla auditoria cada vez que se elimina un
- --deporte que practican los equipos. Previamente, debe crear la tabla auditoria sin clave
- --primaria que posea los mismos registros que la tabla deporte, al cual se le adiciona la
- --fecha_actual y hora_actual del sistema.
- create table auditoria(
- id_deporte integer,
- nombre_deporte varchar (20),
- fecha_actual date,
- hora_actual time
- );
- create or replace function registro_eliminacion()
- returns trigger as $$
- begin
- insert into auditoria(
- id_deporte,
- nombre_deporte,
- fecha_actual,
- hora_actual
- )
- values(
- old.id_deporte,
- old.nombre_deporte,
- current_date,
- current_time
- );
- return old;
- end;
- $$language plpgsql;
- create trigger trigger_registroeliminacion
- before delete on deporte
- for each row
- execute function registro_eliminacion();
- delete from deporte where id_deporte = 2020;
- select* from deporte;
- insert into deporte (id_deporte,nombre_deporte)
- values(2020,
- 'voley');
- select * from auditoria;
- --12. Realice un trigger que verifique que se haya completado la categoría cuando se ingresa un
- --nuevo registro en la tabla equipo, en el caso de que el mencionado campo se encuentre
- --vacío, no inserte ese registro y muestre el mensaje “la categoría no fue asignada“.
- create or replace function verificar_categoria()
- returns trigger as $$
- begin
- if new.categoria is null or trim (new.categoria) = '' then
- raise exception 'debe completar categoria';
- end if;
- return new;
- end;
- $$language plpgsql;
- create trigger verificar
- after insert on equipo
- for each row
- execute function verificar_categoria();
- select * from equipo;
- insert into equipo
- values (
- 6,
- 'equipo1',
- 'aa',
- 4040,
- 'a'
- );
- select * from equipo
- order by equipo;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement