Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AP6-AA2-Ev1-Usar Lenguaje Transaccional Sobre La Base de Datos
AP6-AA2-Ev1-Usar Lenguaje Transaccional Sobre La Base de Datos
Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.
CREATE FUNCTION `valorpromedio`(`input` INT) RETURNS INT(11) NOT DE
TERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE
promedio int; SELECT AVG(valor_cur) INTO promedioFROM curso WHERE ho
ras_cur>='40'; RETURN promedio; END
SELECT `valorpromedio`(@p0) AS `valorpromedio`;
Obtener el sueldo promedio de los profesores de la categora 1.
CREATE FUNCTION `sueldopromedio`(`input` INT) RETURNS INT(11) NOT D
ETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECLARE
promedio int; SELECT AVG(sal_prof) INTO promedioFROM profesor WHERE c
ate_prof='1'; RETURN promedio; END
SELECT `sueldopromedio`(@p0) AS `sueldopromedio`;
Muestre el nombre del profesor con menor sueldo.
CREATE FUNCTION `menorsueldo`(`inout` INT) RETURNS VARCHAR(30) NO
T DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN DECL
ARE nombre varchar(30);SELECT nom_prof INTO nombre FROM profesor whe
re sal_prof=(select min(sal_prof) from profesor); RETURN nombre; END
SELECT `menorsueldo`(@p0) AS `menorsueldo`;
Borrado
Profesor
CREATE TRIGGER `profesordelete` AFTER DELETE ON `profesor` FOR EAC
H ROW INSERT INTO trigger_profesores (DocumentoAnterior, NombreAnterior,
ApellidoAnterior, CategoriaAnterior,SalarioAnterior, DocumentoNuevo, Nombre
Nuevo, ApellidoNuevo, CategoriaNuevo, SalarioNuevo) VALUES (OLD.doc_pro
f, OLD.nom_prof, OLD.ape_prof, OLD.cate_prof, OLD.sal_prof);
Curso
CREATE TRIGGER `cursodelete` AFTER DELETE ON `curso` FOR EACH RO
W INSERT INTO trigger_cursos(CodigoAnterior, NombreAnterior, HorasAnterior
, ValorAnterior, CodigooNuevo,NombreNuevo,HorasNuevo, ValorNuevo) VALU
ES (OLD.cod_curs, OLD.nom_curs, OLD.horas_cur, OLD.valor_cur);
Estudiante
CREATE TRIGGER `estudiantedelete` AFTER DELETE ON `estudiante` FOR
EACH ROW INSERT INTO trigger_estudiante (DocumentoAnterior,NombreAnt
erior, ApellidoAnterior, EdadAnterior, DocumentoNuevo, NombreNuevo, Apellid
oNuevo, EdadNuevo) VALUES (OLD.doc_est, OLD.nom_est, OLD.ape_est, OL
D.edad_est)
En ORACLE; para las tablas Cliente, Articulo, Pedido.
Actualizacin:
Cliente
create or replace trigger "CLIENTEUPDATE"
BEFORE
update on "CLIENTE"
for each row
begin
INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior,
DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo,
NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo,
MesCumpleNuevo) VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli,
:OLD.dir_cli, :OLD.dep_cli, :OLD.mes_cum_cli, :NEW.id_cli, :NEW.nom_cli,
:NEW.ape_cli, :NEW.dir_cli, :NEW.dep_cli, :NEW.mes_cum_cli);
end;
Articulo
create or replace trigger "ARTICULOUPDATE"
BEFORE
update on "ARTICULO"
for each row
begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior,
EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo,
EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art,
:OLD.edi_art, :OLD.prec_art, :NEW.id_art, :NEW.tit_art, :NEW.aut_art,
:NEW.edi_art, :NEW.prec_art);
end;
Pedido
create or replace trigger "PEDIDOUPDATE"
BEFORE
update on "PEDIDO"
for each row
begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior,
FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo,
FechaNuevo, ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped,
:OLD.fec_ped, :OLD.val_ped, :NEW.id_ped, :NEW.id_cli_ped,
:NEW.fec_ped, :NEW.val_ped);
end;
Borrado
Cliente
create or replace trigger "CLIENTEDELETE"
AFTER
delete on "CLIENTE"
for each row
begin
INSERT INTO trigger_cliente (CodigoAnterior, NombreAnterior, ApellidoAnterior,
DireccionAnterior,DepartamentoAnterior, MesCumpleAnterior, CodigoNuevo,
NombreNuevo, ApellidoNuevo, DireccionNuevo, DepartamentoNuevo,
MesCumpleNuevo) VALUES (:OLD.id_cli, :OLD.nom_cli, :OLD.ape_cli,
:OLD.dir_cli, :OLD.dep_cli, :OLD.mes_cum_cli);
end;
Articulo
create or replace trigger "ARTICULODELETE"
AFTER
delete on "ARTICULO"
for each row
begin
INSERT INTO trigger_articulo (CodigoAnterior, NombreAnterior, AutorAnterior,
EditorialAnterior, PrecioAnterior, CodigoNuevo, NombreNuevo, AutorNuevo,
EditorialNuevo, PrecioNuevo) VALUES (:OLD.id_art, :OLD.tit_art, :OLD.aut_art,
:OLD.edi_art, :OLD.prec_art);
end;
Pedido
create or replace trigger "PEDIDODELETE"
AFTER
delete on "PEDIDO"
for each row
begin
INSERT INTO trigger_pedido (CodigoAnterior, DocumentoClienteAnterior,
FechaAnterior, ValorAnterior, CodigoNuevo, DocumentoClienteNuevo,
FechaNuevo, ValorNuevo) VALUES (:OLD.id_ped, :OLD.id_cli_ped,
:OLD.fec_ped, :OLD.val_ped);
end;
En el Motor de su preferencia (ORACLE O MySQL), para las tablas,
Automotores, Aseguramientos, Incidentes.
Actualizacin:
Automotores
CREATE TRIGGER `automotoresupdate` BEFORE UPDATE ON `automotores`
FOR EACH ROW INSERT INTO trigger_automotores (PlacaAnterior, MarcaAnt
erior, TipoAnterior, ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior,
NumeroChasisAnterior, PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuevo,
NumeroPasajerosNuevo, CilindrajeNuevo, NumeroChasisNuevo)VALUES (OL
D.autoplaca, OLD.automarca, OLD.autotipo, OLD.automodelo, OLD.autonumpa
sajeros, OLD.autocilindraje, OLD.autonumchasis, NEW.autoplaca, NEW.autom
arca, NEW.autotipo,NEW.automodelo, NEW.autonumpasajeros, NEW.autocilin
draje, NEW.autonumchasis)
Aseguramientos
CREATE TRIGGER `aseguramientosupdate` BEFORE UPDATE ON `aseguram
ientos` FOR EACH ROW INSERT INTO trigger_aseguramientos(CodigoAnterio
r, FechaInicioAnterior,FechaExpiracionAnterior, ValorAseguradoAnterior, Estado
Anterior, CostoAnterior, PlacaAnterior, CodigoNuevo, FechaInicioNuevo, Fecha
ExpiracionNuevo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaNue
vo) VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion, O
LD.asevalorasegurado, OLD.aseestado, OLD.asecosto, OLD.aseplaca,NEW.as
ecodigo, NEW.asefechainicio, NEW.asefechaexpiracion, NEW.asevalorasegura
do, NEW.aseestado, NEW.asecosto, NEW.aseplaca)
Incidentes
CREATE TRIGGER `incidentesupdate` BEFORE UPDATE ON `incidentes` FO
R EACH ROW INSERT INTO trigger_incidentes(CodigoAnterior, FechaAnterior,
PlacaAnterior, LugarAnterior,CantidadHeridosAnterior, CantidadFatalidadesAnt
erior, CantidadAutosInvolucradosAnterior, CodigoNuevo, FechaNuevo, PlacaNu
evo, LugarNuevo, CantidadHeridosNuevo,CantidadFatalidadesNuevo, Cantidad
AutosInvolucradosNuevo) VALUES (OLD.incicodigo, OLD.incifecha, OLD.incipl
aca, OLD.incilugar, OLD.incicantheridos, OLD.incicanfatalidades,OLD.incicana
utosinvolucrados, NEW.incicodigo, NEW.incifecha, NEW.inciplaca, NEW.incilug
ar, NEW.incicantheridos, NEW.incicanfatalidades, NEW.incicanautosinvolucrad
os)
Borrado
Automotores
CREATE TRIGGER `automotoresdelete` AFTER DELETE ON `automotores` F
OR EACH ROW INSERT INTO trigger_automotores (PlacaAnterior, MarcaAnter
ior, TipoAnterior, ModeloAnterior,NumeroPasajerosAnterior, CilindrajeAnterior,
NumeroChasisAnterior, PlacaNuevo, MarcaNuevo, TipoNuevo, ModeloNuevo,
NumeroPasajerosNuevo, CilindrajeNuevo, NumeroChasisNuevo)VALUES (OL
D.autoplaca, OLD.automarca, OLD.autotipo, OLD.automodelo, OLD.autonumpa
sajeros, OLD.autocilindraje, OLD.autonumchasis)
Aseguramientos
CREATE TRIGGER `aseguramientosdelete` AFTER DELETE ON `aseguramie
ntos` FOR EACH ROW INSERT INTO trigger_aseguramientos(CodigoAnterior,
FechaInicioAnterior,FechaExpiracionAnterior, ValorAseguradoAnterior, EstadoA
nterior, CostoAnterior, PlacaAnterior, CodigoNuevo, FechaInicioNuevo, FechaE
xpiracionNuevo, ValorAseguradoNuevo,EstadoNuevo, CostoNuevo, PlacaNuev
o) VALUES (OLD.asecodigo, OLD.asefechainicio, OLD.asefechaexpiracion, OL
D.asevalorasegurado, OLD.aseestado, OLD.asecosto, OLD.aseplaca)
Incidentes