Solucion laboratorio lenguaje_transaccional

romero janeth
romero janethsecretaria coordinacion convivencia um Colegio Superior Americano

solucion lsboratorio lenguaje trnsaccional

SOLUCION LABORATORIO LENGUAJE TRANSACCIONAL
YANETH ROMERO RAMIREZ
SERVICIO NACIONAL DE APRENDIZAJE (SENA)
(ADSI) ANÁLISIS Y DE SARROLLO DE SISTEMAS DE INFORMACIÓN
BOGOTÁ
2017
SOLUCION LABORATORIO
Construya los siguiente procedimientos Almacenados para inserción de
registros:para las tablas Profesor, Curso, Estudiante,
Estudiantexcurso.
CREATE PROCEDURE InsertProfesor(pdocProf VARCHAR(11), pNomProf VARCHAR(30),
pApeProf VARCHAR(30), pCateProf INT(11), pSalProf INT(11))
INSERT INTO profesor(doc_prof, nom_prof, ape_prof, cate_prof, sal_prof)
VALUES(pdocProf, pNomProf, pApeProf , pCateProf, pSalProf);
CREATE PROCEDURE InsertCurso(pcod_curs INT(11), pnom_curs VARCHAR(100),
phoras_cur INT(11), pvalor_cur INT(11))
INSERT INTO curso(cod_curs, nom_curs, horas_cur, valor_cur)
VALUES(pcod_curs, pnom_curs, phoras_cur, pvalor_cur);
CREATE PROCEDURE InsertEstudiante(pdoc_est INT(11), pnom_est VARCHAR(30),
pap_est VARCHAR(30), pedad_est INT(11))
INSERT INTO estudiante(doc_est, nom_est, ap_est, edad_est)
VALUES(pdoc_est , pnom_est , pap_est, pedad_est);
CREATE PROCEDURE InsertEstudiantexCurso(pcod_cur_estcur INT(11), pdoc_est_estcur
INT(30), pfec_ini_estcur DATE)
INSERT INTO estudiantexcurso(cod_cur_estcur, doc_est_estcur,
fec_ini_estcur)
VALUES(pcod_cur_estcur, pdoc_est_estcur, pfec_ini_estcur
3.En MySQL construya los procedimientos almacenados para realizar los siguientes
procesos:
• Muestre todos los campos de la tabla curso en orden ascendente según el valor.
CREATE PROCEDURE CursoOrdenado()
SELECT *
FROM curso
ORDER BY valor_cur;
• Mostrar los pedidos con los respectivos artículos(código, nombre,valor y
cantidad pedida).
CREATE PROCEDURE GetPedidosConArticulos()
SELECT p.id_ped, p.tit_art, val_ven_art_artped Valor Artículo,
can_art_artped
FROM pedido p
INNER JOIN articuloxpedido ap
ON p.id_ped = ap.id_ped_artped
INNER JOIN articulo a
ON a.id_art = ap.id_art_artped
• Visualizar los datos de las empresas fundadas entre el año 1991 y 1998.
CREATE PROCEDURE GetEmpresasEntre9198()
SELECT *
FROM compañia
WHERE comañofun BETWEEN 1991 AND 1998;
• Visualizar todos los clientes organizados por apellido.
CREATE PROCEDURE GetClientesOrganizados()
SELECT *
FROM cliente
ORDER BY ape_cli;
• Visualizar los datos de los incidentes que han tenido un(1) herido,este
reporte debe visualizar la placa del automotor, con los respectivos
datos de la póliza como son fecha de inicio, valor, estado y valor asegurado.
CREATE PROCEDURE GetIncidentesConUnHerido()
SELECT inciplaca, aseg.asefechainicio, aseg.asecosto, aseg.aseestado,
aseg.asevalorasegurado
FROM incidentes i
INNER JOIN automotores a
ON a.autoplaca = i.inciplaca
INNER JOIN aseguramientos aseg
ON aseg.aseplaca = a.autoplaca
WHERE incicantheridos = 1;
• Visualizar los incidentes del vehículo con placas " FLL420", este reporte debe
visualizar la fecha, el lugar, la cantidad de heridos del
incidente, la fecha de inicio la de expiración de la póliza y el valor
asegurado.
CREATE PROCEDURE GetIncidentesVehiculo()
SELECT i.incifecha, i.incilugar, i.incicantheridos, aseg.asefechainicio,
aseg.asefechaexpiracion, aseg.asevalorasegurado
FROM incidentes i
INNER JOIN automotores a
ON a.autoplaca = i.inciplaca
INNER JOIN aseguramientos aseg
ON aseg.aseplaca = a.autoplaca
WHERE a.autoplaca = 'FLL420' ;
4. Realice las Siguientes funciones en MySQL:
• Cuente el número de estudiantes cuya edad sea mayor a 22.
DELIMITER //
CREATE FUNCTION NumeroEstudiantes()
RETURNS INT
BEGIN
DECLARE numero INT;
--
SELECT COUNT(1) INTO numero
FROM estudiante
WHERE edad_est > 22;
--
RETURN numero;
END
//
• Muestre el nombre y la edad del estudiante más joven.
DELIMITER //
CREATE FUNCTION NombreEdadEstudianteMasJoven()
RETURNS VARCHAR(30)
BEGIN
DECLARE pnombre VARCHAR(30);
DECLARE pedad VARCHAR(30);
--
SELECT nom_est, edad_est
INTO pnombre, pedad
FROM estudiante
WHERE edad_est = (SELECT MIN(edad_est)
FROM estudiante);
--
RETURN CONCAT(pnombre, " ", pedad);
END//
• Calcule el valor promedio de los cursos cuyas horas sean mayores a 40.
DELIMITER //
CREATE FUNCTION ValorPromedioCursos()
RETURNS INT
BEGIN
DECLARE pPromedio DECIMAL(11, 4);
--
SELECT AVG(valor_cur) INTO pPromedio
FROM curso
WHERE horas_cur > 40;
--
RETURN pPromedio ;
END//
• Obtener el sueldo promedio de los profesores de la categoría 1.
DELIMITER //
CREATE FUNCTION SueldoPromedioProfesores()
RETURNS INT
BEGIN
DECLARE pPromedio DECIMAL(11, 4);
--
SELECT AVG(sal_prof) INTO pPromedio
FROM profesor
WHERE cate_prof = 1;
--
RETURN pPromedio ;
END//
--
• Muestre el nombre del profesor con menor sueldo.
DELIMITER //
CREATE FUNCTION NombreProfesorMenorSueldo()
RETURNS VARCHAR(60)
BEGIN
DECLARE pNombre VARCHAR(60);
--
SELECT CONCAT(nom_prof, ape_prof) INTO pNombre
FROM profesor
WHERE sal_prof = (SELECT MIN(sal_prof)
FROM profesor);
--
RETURN pNombre ;
END//
6. Construya los siguiente disparadores para controlar la actualización y
borrado de registros
-- profesor
-- Creamos tabla de PROFESOR
CREATE TABLE auditoria_profesor(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_nom_prof_anterior
VARCHAR(30) NOT NULL ,
audi_ape_prof_anterior
VARCHAR(30) NOT NULL ,
audi_cate_prof_anterior INT
NOT NULL ,
audi_sal_prof_anterior INT
NOT NULL ,
audi_nom_prof_nuevo
VARCHAR(30) ,
audi_ape_prof_nuevo
VARCHAR(30) ,
audi_cate_prof_nuevo INT
,
audi_sal_prof_nuevo INT
,
,
audi_fechamodificacion
DATETIME ,
audi_usuario
VARCHAR(50) ,
audi_doc_prof
VARCHAR(11) NOT NULL ,
audi_acccion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_profesor_update
BEFORE UPDATE ON profesor
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_profesor( audi_nom_prof_anterior ,
audi_ape_prof_anterior ,
audi_cate_prof_anterior ,
audi_sal_prof_anterior ,
audi_nom_prof_nuevo ,
audi_ape_prof_nuevo ,
audi_cate_prof_nuevo ,
audi_sal_prof_nuevo ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_prof
,
audi_acccion
)
VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof ,
new.nom_prof , new.ape_prof , new.cate_prof ,
new.sal_prof,
now(), current_user(), new.doc_prof, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE PROFESOR
SET nom_prof = 'Martha XXX',
ape_prof = 'Rojas XXX',
cate_prof = 4 ,
sal_prof = 1000000
WHERE doc_prof = '63502720';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_profesor_delete
AFTER DELETE ON profesor
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_profesor( audi_nom_prof_anterior ,
audi_ape_prof_anterior ,
audi_cate_prof_anterior ,
audi_sal_prof_anterior ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_prof
,
audi_acccion
)
VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof ,
now(), current_user(), old.doc_prof, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM PROFESOR
WHERE doc_prof = '91216904';
--CURSO
-- Creamos tabla de CURSO
CREATE TABLE auditoria_curso(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_nom_curs_anterior
VARCHAR(100) NOT NULL ,
audi_horas_cur_anterior INT NOT
NULL ,
audi_valor_cur_anterior INT
NOT NULL ,
audi_nom_curs_nuevo
VARCHAR(100) ,
audi_horas_cur_nuevo INT
,
audi_valor_cur_nuevo INT
,
audi_fechamodificacion DATETIME
,
audi_usuario
VARCHAR(50) ,
audi_cod_curs
VARCHAR(11) NOT NULL ,
audi_acccion
VARCHAR(45) NOT NULL
);
-- CREAMOR EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_curso_update
BEFORE UPDATE ON curso
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_curso(
audi_nom_curs_anterior ,
audi_horas_cur_anterior ,
audi_valor_cur_anterior ,
audi_nom_curs_nuevo ,
audi_horas_cur_nuevo ,
audi_valor_cur_nuevo ,
audi_fechamodificacion ,
audi_usuario ,
audi_cod_curs ,
audi_acccion
)
VALUES(old.nom_curs , old.horas_cur , old.valor_cur,
new.nom_curs , new.horas_cur , new.valor_cur,
now(), current_user(), new.cod_curs, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE curso
SET nom_curs = 'Fundamentos de SQL XXX',
horas_cur = 40,
valor_cur = 1400000
WHERE cod_curs = '250067';
-- CREAMOR EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_curso_delete
AFTER DELETE ON curso
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_curso(
audi_nom_curs_anterior ,
audi_horas_cur_anterior ,
audi_valor_cur_anterior ,
audi_fechamodificacion ,
audi_usuario ,
audi_cod_curs ,
audi_acccion
)
VALUES(old.nom_curs , old.horas_cur , old.valor_cur,
now(), current_user(), old.cod_curs, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
delete from estudiantexcurso where cod_cur_estcur = 289011;
--
DELETE FROM curso
WHERE cod_curs = '289011';
-- ESTUDIANTE
-- Creamos tabla de ESTUDIANTE
CREATE TABLE auditoria_estudiante(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_nom_est_anterior VARCHAR(30)
NOT NULL ,
audi_ape_est_anterior VARCHAR(30)
NOT NULL ,
audi_edad_est_anterior INT
(11) NOT NULL ,
audi_nom_est_nuevo VARCHAR(30)
,
audi_ape_est_nuevo VARCHAR(30)
,
audi_edad_est_nuevo INT
,
audi_fechamodificacion DATETIME
,
audi_usuario
VARCHAR(50) ,
audi_doc_est
VARCHAR(11) NOT NULL ,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_estudiante_update
BEFORE UPDATE ON estudiante
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_estudiante( audi_nom_est_anterior ,
audi_ape_est_anterior ,
audi_edad_est_anterior ,
audi_nom_est_nuevo ,
audi_ape_est_nuevo ,
audi_edad_est_nuevo ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_est
,
audi_accion
)
VALUES(old.nom_est , old.ape_est , old.edad_est,
new.nom_est , new.ape_est , new.edad_est ,
now(), current_user(), new.doc_est, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE ESTUDIANTE
SET nom_est = 'Jonatan XXX',
ape_est = 'Ardila XXX',
edad_est = 17
WHERE doc_est = '1098098097';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_estudiante_delete
AFTER DELETE ON estudiante
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_estudiante( audi_nom_est_anterior ,
audi_ape_est_anterior ,
audi_edad_est_anterior ,
audi_fechamodificacion ,
audi_usuario
,
audi_doc_est
,
audi_accion
)
VALUES(old.nom_est , old.ape_est , old.edad_est,
now(), current_user(), old.doc_est, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM estudiantexcurso where doc_est_estcur = 91245678;
DELETE FROM estudiante
WHERE doc_est = '91245678';
mysql>create table Estudiante(doc_est varcharalterEstudiante(11) not
null,nom_est varchar(30)
not null,ape_est varchar(30) not null,edad_est int not null,primary key(doc_est)
);
-- automotores
--Creamos tabla de AUTOMOTORES
CREATE TABLE auditoria_automotores(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_Automarca_anterior VARCHAR(30)
NOT NULL ,
audi_Autotipo_anterior INT
NOT NULL ,
audi_Automodelo_anterior INT (11)
NOT NULL ,
audi_Autonumpasajeros_anterior INT
,
audi_Autocilindraje_anterior INT
,
audi_Autonumchasis_anterior
VARCHAR(30) ,
audi_Automarca_nuevo
VARCHAR(30) ,
audi_Autotipo_nuevo INT
,
audi_Automodelo_nuevo INT
(11) ,
audi_Autonumpasajeros_nuevo INT
,
audi_Autocilindraje_nuevo INT
,
audi_Autonumchasis_nuevo
VARCHAR(30) ,
x DATETIME ,
audi_usuario
VARCHAR(50) ,
audi_autoplaca
VARCHAR(6) NOT NULL ,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_automotores_update
BEFORE UPDATE ON automotores
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_automotores( audi_Automarca_anterior ,
audi_Autotipo_anterior ,
audi_Automodelo_anterior,
audi_Autonumpasajeros_anterior,
audi_Autocilindraje_anterior ,
audi_Autonumchasis_anterior,
audi_Automarca_nuevo ,
audi_Autotipo_nuevo ,
audi_Automodelo_nuevo ,
audi_Autonumpasajeros_nuevo
,
audi_Autocilindraje_nuevo ,
audi_Autonumchasis_nuevo ,
audi_fechamodificacion ,
audi_usuario
,
audi_autoplaca
,
audi_accion
)
VALUES(old.Automarca, old.Autotipo , old.Automodelo ,
old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis ,
new.Automarca, new.Autotipo , new.Automodelo ,
new.Autonumpasajeros , new.Autocilindraje, new.Autonumchasis ,
now(), current_user(), new.autoplaca, 'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE Automotores
SET Automarca = 'chevrolet corsa ACTIVE',
Autotipo = 1,
Automodelo = 2003 ,
Autonumpasajeros = 8 ,
Autocilindraje = 1800 ,
Autonumchasis = 'wywzzz167kk009d45'
WHERE autoplaca = 'FLL420';
-- CREAMOR EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_automotores_delete
AFTER DELETE ON automotores
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_automotores( audi_Automarca_anterior ,
audi_Autotipo_anterior ,
audi_Automodelo_anterior,
audi_Autonumpasajeros_anterior,
audi_Autocilindraje_anterior ,
audi_Autonumchasis_anterior,
audi_usuario
,
audi_autoplaca
,
audi_fechamodificacion ,
audi_accion
)
VALUES(old.Automarca,old.Autotipo , old.Automodelo ,
old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis ,
now(), current_user(), old.autoplaca, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM aseguramientos where aseplaca = 'KJQ920';
DELETE FROM automotores
WHERE autoplaca = 'KJQ920';
select * from auditoria_automotores;
-- aseguramientos
-- Creamos tabla de ASEGURAMIENTOS
CREATE TABLE auditoria_Aseguramientos(id_audi INT(11) AUTO_INCREMENT PRIMARY
KEY,
audi_asefechainicio_anterior
DATE NOT NULL ,
audi_asefechaexpiracion_anterior
DATE NOT NULL ,
audi_asevaloraegurado_anterior
INT NOT NULL ,
audi_aseestado_anterior
VARCHAR(30) NOT NULL ,
audi_asecosto_anterior
INT NOT NULL ,
audi_aseplaca_anterior
VARCHAR(20) NOT NULL ,
audi_asefechainicio_nuevo
DATE ,
audi_asefechaexpiracion_nuevo
DATE ,
audi_asevaloraegurado_nuevo
INT ,
audi_aseestado_nuevo
VARCHAR(30) ,
audi_asecosto_nuevo
INT ,
audi_aseplaca_nuevo
VARCHAR(20) ,
audi_fechamodificacion
DATETIME ,
audi_usuario
VARCHAR(50) ,
audi_asecodigo
INT NOT NULL ,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_aseguramientos_update
BEFORE UPDATE ON aseguramientos
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior ,
audi_asefechaexpiracion_anterior
,
audi_asevaloraegurado_anterior
,
audi_aseestado_anterior
,
audi_asecosto_anterior
,
audi_aseplaca_anterior
,
audi_asefechainicio_nuevo
,
audi_asefechaexpiracion_nuevo
,
audi_asevaloraegurado_nuevo
,
audi_aseestado_nuevo
,
audi_asecosto_nuevo
,
audi_aseplaca_nuevo
,
audi_fechamodificacion
,
audi_usuario
,
audi_asecodigo
,
audi_accion
)
VALUES(old.asefechainicio, old.asefechaexpiracion ,
old.asevalorasegurado , old.aseestado, old.asecosto, old.aseplaca,
new.asefechainicio, new.asefechaexpiracion ,
new.asevalorasegurado , new.aseestado , new.asecosto, new.aseplaca,
now(), current_user(), new.asecodigo ,
'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE aseguramientos
SET asefechainicio = '2012-10-10',
asefechaexpiracion = '2013-10-30',
asevalorasegurado = 80000000,
aseestado = 'Vigente',
asecosto = 700000,
aseplaca ='FLL420'
WHERE asecodigo = '2';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_aseguramientos_delete
AFTER DELETE ON aseguramientos
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior ,
audi_asefechaexpiracion_anterior
,
audi_asefechaexpiracion_anterior
,
audi_asevaloraegurado_anterior
,
audi_aseestado_anterior
,
audi_asecosto_anterior
,
audi_aseplaca_anterior
,
audi_fechamodificacion
,
audi_usuario
,
audi_asecodigo
,
audi_accion
)
VALUES(old.asefechainicio , old.asefechaexpiracion ,
old.asevalorasegurado, old.aseestado, old.asecosto, old.aseplaca,
now(), current_user(), old.asecodigo, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM aseguramientos
WHERE asecodigo = '2';
-- incidentes
--Creamos tabla de INCIDENTES
CREATE TABLE auditoria_incidentes(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY,
audi_incifecha_anterior DATE NOT
NULL ,
audi_inciplaca_anterior VARCHAR(6)
NOT NULL ,
audi_incilugar_anterior VARCHAR(40)
NOT NULL ,
audi_incicantheridos_anterior INT
NOT NULL ,
audi_incicanfatalidades_anterior INT
NOT NULL ,
audi_incicanautosinvolucrados_anterior INT NOT NULL ,
audi_incifecha_nuevo DATE
,
audi_inciplaca_nuevo VARCHAR(6)
,
audi_incilugar_nuevo VARCHAR(40)
,
audi_incicantheridos_nuevo INT
,
audi_incicanfatalidades_nuevo INT
,
audi_incicanautosinvolucrados_nuevo
INT ,
audi_fechamodificacion DATETIME
,
audi_usuario
VARCHAR(50) ,
audi_incicodigo INT NOT NULL
,
audi_accion
VARCHAR(45) NOT NULL
);
-- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN
delimiter //
CREATE TRIGGER trg_incidentes_update
BEFORE UPDATE ON incidentes
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_incidentes(audi_incifecha_anterior ,
audi_inciplaca_anterior ,
audi_incilugar_anterior ,
audi_incicantheridos_anterior
,
audi_incicanfatalidades_anterior ,
audi_incicanautosinvolucrados_anterior ,
audi_incifecha_nuevo
,
audi_inciplaca_nuevo
,
audi_incilugar_nuevo
,
audi_incicantheridos_nuevo
,
audi_incicanfatalidades_nuevo
,
audi_incicanautosinvolucrados_nuevo
,
audi_fechamodificacion
,
audi_usuario
,
audi_incicodigo ,
audi_accion
)
VALUES(old.incifecha , old.inciplaca , old.incilugar,
old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados,
new.incifecha , new.inciplaca , new.incilugar ,
new.incicantheridos, new.incicanfatalidades,new.incicanautosinvolucrados,
now(), current_user(), new.incicodigo,
'Actualización');
END;//
-- PROBAMOS ACTUALIZANDO UN REGISTRO
UPDATE incidentes
SET incifecha = '2012-11-11',
inciplaca = 'FLL420',
incilugar = 'San Gil',
incicantheridos = 2,
incicanfatalidades = 3,
incicanautosinvolucrados = 4
WHERE incicodigo = '1';
-- CREAMOS EL TRIGGER PARA el delete
delimiter //
CREATE TRIGGER trg_auditoria_incidentes_delete
AFTER DELETE ON incidentes
FOR EACH ROW
BEGIN
--
INSERT INTO auditoria_incidentes(audi_incifecha_anterior ,
audi_inciplaca_anterior ,
audi_incilugar_anterior ,
audi_incicantheridos_anterior
,
audi_incicanfatalidades_anterior ,
audi_incicanautosinvolucrados_anterior ,
audi_fechamodificacion
,
audi_usuario
,
audi_incicodigo ,
audi_accion
)
VALUES(old.incifecha , old.inciplaca , old.incilugar,
old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados,
now(), current_user(), old.incicodigo, 'Registro
Eliminado');
END;//
--PROBAMOS ELIMINANDO UN REGISTRO
DELETE FROM INCIDENTES where incicodigo = 3;
--Solucion_Laboratorio_LenguajeTransaccional.txt

Recomendados

8.ejercicios SQL access von
8.ejercicios SQL access8.ejercicios SQL access
8.ejercicios SQL accessMarcelo Herrera
36.4K views7 Folien
Programación MySQL-Ejercicios von
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
51.8K views19 Folien
PostgreSQL - Lección 6 - Subconsultas von
PostgreSQL - Lección 6 - SubconsultasPostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasNicola Strappazzon C.
14.1K views19 Folien
Ejercicio Atletas Adsi java SENA :) von
Ejercicio Atletas Adsi java SENA   :)Ejercicio Atletas Adsi java SENA   :)
Ejercicio Atletas Adsi java SENA :)ramitos526
1.9K views2 Folien
Manual De Usuario von
Manual De UsuarioManual De Usuario
Manual De Usuarionahun1385
464 views26 Folien
Diseño y validacion GUI con java usando Netbeans von
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansEmerson Garay
9.8K views18 Folien

Más contenido relacionado

Was ist angesagt?

Postfix y Dovecot con cuentas MariaDB en Debian Bullseye von
Postfix y Dovecot con cuentas MariaDB  en Debian BullseyePostfix y Dovecot con cuentas MariaDB  en Debian Bullseye
Postfix y Dovecot con cuentas MariaDB en Debian BullseyeHenry Cristian Cuesta Vega
1K views26 Folien
Guia n9 conexion sql server 2012 y visual studio 2015 parte I von
Guia n9 conexion sql server 2012 y visual studio 2015 parte  IGuia n9 conexion sql server 2012 y visual studio 2015 parte  I
Guia n9 conexion sql server 2012 y visual studio 2015 parte IJohan Silva Cueva
251 views36 Folien
Triggers and Stored Procedures von
Triggers and Stored ProceduresTriggers and Stored Procedures
Triggers and Stored ProceduresTharindu Weerasinghe
882 views23 Folien
Procedimientos almacenados von
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenadosthalia margarita serrano diaz
2.5K views11 Folien

Was ist angesagt?(20)

Guia n9 conexion sql server 2012 y visual studio 2015 parte I von Johan Silva Cueva
Guia n9 conexion sql server 2012 y visual studio 2015 parte  IGuia n9 conexion sql server 2012 y visual studio 2015 parte  I
Guia n9 conexion sql server 2012 y visual studio 2015 parte I
Johan Silva Cueva 251 views
Sql Commands von Sachin MK
Sql CommandsSql Commands
Sql Commands
Sachin MK1.5K views
Basic Sql Handouts von jhe04
Basic Sql HandoutsBasic Sql Handouts
Basic Sql Handouts
jhe043.4K views
A presentation on table loader transformation von Kaushal Solanki
A presentation on table loader transformationA presentation on table loader transformation
A presentation on table loader transformation
Kaushal Solanki2.1K views
Formularios en SQL Server von KareliaRivas
Formularios en SQL ServerFormularios en SQL Server
Formularios en SQL Server
KareliaRivas475 views
Comandos de consultas.pdf von uriel305595
Comandos de consultas.pdfComandos de consultas.pdf
Comandos de consultas.pdf
uriel30559563 views
Ejemplo de manual sistema de inventario de operaciones estadisticas von sullinsan
Ejemplo de manual sistema de inventario de operaciones estadisticasEjemplo de manual sistema de inventario de operaciones estadisticas
Ejemplo de manual sistema de inventario de operaciones estadisticas
sullinsan4.3K views
DIBUJO EN JFRAME CASA von Anel Sosa
DIBUJO EN JFRAME CASADIBUJO EN JFRAME CASA
DIBUJO EN JFRAME CASA
Anel Sosa1.4K views
PostgreSQL - Lección 1 - Usando la sentencia SELECT von Nicola Strappazzon C.
PostgreSQL - Lección 1 - Usando la sentencia SELECTPostgreSQL - Lección 1 - Usando la sentencia SELECT
PostgreSQL - Lección 1 - Usando la sentencia SELECT
Nicola Strappazzon C.24.4K views
SISTEMA DE FACTURACION (Ejemplo desarrollado) von Darwin Durand
SISTEMA DE FACTURACION (Ejemplo desarrollado)SISTEMA DE FACTURACION (Ejemplo desarrollado)
SISTEMA DE FACTURACION (Ejemplo desarrollado)
Darwin Durand146.4K views

Similar a Solucion laboratorio lenguaje_transaccional

Trabajo final von
Trabajo finalTrabajo final
Trabajo finalgmr979
100 views7 Folien
Ejercicios resueltos de_pl-sql von
Ejercicios resueltos de_pl-sqlEjercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sqlMaraMagdalenaBlancoR
194 views35 Folien
7090112 Clase Transact Sql Server von
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
543 views30 Folien
Programacin mysqlejercicios439-131027071437-phpapp01 von
Programacin mysqlejercicios439-131027071437-phpapp01Programacin mysqlejercicios439-131027071437-phpapp01
Programacin mysqlejercicios439-131027071437-phpapp01MaraMagdalenaBlancoR
66 views19 Folien
Manualitosqlserver von
ManualitosqlserverManualitosqlserver
ManualitosqlserverOca srl
54 views10 Folien
Replica von
ReplicaReplica
ReplicaFERNANDO
1.1K views37 Folien

Similar a Solucion laboratorio lenguaje_transaccional(20)

Trabajo final von gmr979
Trabajo finalTrabajo final
Trabajo final
gmr979100 views
7090112 Clase Transact Sql Server von Corfapo
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
Corfapo543 views
Manualitosqlserver von Oca srl
ManualitosqlserverManualitosqlserver
Manualitosqlserver
Oca srl54 views
Replica von FERNANDO
ReplicaReplica
Replica
FERNANDO1.1K views
Unidad vi esp parte 2 procesimientos en plsql y transact sql von Titiushko Jazz
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Titiushko Jazz122 views
Unidad vi esp parte 2 procesimientos en plsql y transact sql von Titiushko Jazz
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Titiushko Jazz948 views
CreacióN De Vistas von blaze0002
CreacióN De VistasCreacióN De Vistas
CreacióN De Vistas
blaze0002368 views
Practica Seis Delphi von Jose Ponce
Practica Seis DelphiPractica Seis Delphi
Practica Seis Delphi
Jose Ponce1.3K views
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM von Kamisutra
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
Kamisutra11.6K views
Estructuras de control en la POO von Amado Arcaya
Estructuras de control en la POOEstructuras de control en la POO
Estructuras de control en la POO
Amado Arcaya1K views

Último

Tienda de cosmeticos von
Tienda de cosmeticosTienda de cosmeticos
Tienda de cosmeticosAlejandra Diaz
6 views9 Folien
Discurso descriptivo von
Discurso descriptivoDiscurso descriptivo
Discurso descriptivoAnthonyAguilera11
47 views34 Folien
Epistemologia de la matematicas cuadro sinoptico.pptx von
Epistemologia de la matematicas cuadro sinoptico.pptxEpistemologia de la matematicas cuadro sinoptico.pptx
Epistemologia de la matematicas cuadro sinoptico.pptxhistoriamatematicas0
5 views15 Folien
Presentación paso 4 colaborativo von
Presentación paso 4 colaborativoPresentación paso 4 colaborativo
Presentación paso 4 colaborativoivonnemaritzacruzrey
7 views5 Folien
Bienes raices Santiago de Chile von
Bienes raices Santiago de ChileBienes raices Santiago de Chile
Bienes raices Santiago de ChileAlejandra Diaz
7 views6 Folien
Encuesta de satisfacción comunicaciones 2023. von
Encuesta de satisfacción  comunicaciones 2023.Encuesta de satisfacción  comunicaciones 2023.
Encuesta de satisfacción comunicaciones 2023.Universidad del Chocò
5 views21 Folien

Último(15)

El uso de las tic en la vida cotidiana.pptx von 231471214
El uso de las tic en la vida cotidiana.pptxEl uso de las tic en la vida cotidiana.pptx
El uso de las tic en la vida cotidiana.pptx
2314712146 views
IM - Operatividad de las Variables.pptx von milennirv2806
IM - Operatividad de las Variables.pptxIM - Operatividad de las Variables.pptx
IM - Operatividad de las Variables.pptx
milennirv28065 views
por que visitar el estado de mex 2.docx von sasagu8000
por que visitar el estado de mex 2.docxpor que visitar el estado de mex 2.docx
por que visitar el estado de mex 2.docx
sasagu80008 views

Solucion laboratorio lenguaje_transaccional

  • 1. SOLUCION LABORATORIO LENGUAJE TRANSACCIONAL YANETH ROMERO RAMIREZ SERVICIO NACIONAL DE APRENDIZAJE (SENA) (ADSI) ANÁLISIS Y DE SARROLLO DE SISTEMAS DE INFORMACIÓN BOGOTÁ 2017 SOLUCION LABORATORIO Construya los siguiente procedimientos Almacenados para inserción de registros:para las tablas Profesor, Curso, Estudiante, Estudiantexcurso. CREATE PROCEDURE InsertProfesor(pdocProf VARCHAR(11), pNomProf VARCHAR(30), pApeProf VARCHAR(30), pCateProf INT(11), pSalProf INT(11)) INSERT INTO profesor(doc_prof, nom_prof, ape_prof, cate_prof, sal_prof) VALUES(pdocProf, pNomProf, pApeProf , pCateProf, pSalProf); CREATE PROCEDURE InsertCurso(pcod_curs INT(11), pnom_curs VARCHAR(100), phoras_cur INT(11), pvalor_cur INT(11)) INSERT INTO curso(cod_curs, nom_curs, horas_cur, valor_cur) VALUES(pcod_curs, pnom_curs, phoras_cur, pvalor_cur); CREATE PROCEDURE InsertEstudiante(pdoc_est INT(11), pnom_est VARCHAR(30), pap_est VARCHAR(30), pedad_est INT(11)) INSERT INTO estudiante(doc_est, nom_est, ap_est, edad_est) VALUES(pdoc_est , pnom_est , pap_est, pedad_est); CREATE PROCEDURE InsertEstudiantexCurso(pcod_cur_estcur INT(11), pdoc_est_estcur INT(30), pfec_ini_estcur DATE) INSERT INTO estudiantexcurso(cod_cur_estcur, doc_est_estcur, fec_ini_estcur) VALUES(pcod_cur_estcur, pdoc_est_estcur, pfec_ini_estcur 3.En MySQL construya los procedimientos almacenados para realizar los siguientes
  • 2. procesos: • Muestre todos los campos de la tabla curso en orden ascendente según el valor. CREATE PROCEDURE CursoOrdenado() SELECT * FROM curso ORDER BY valor_cur; • Mostrar los pedidos con los respectivos artículos(código, nombre,valor y cantidad pedida). CREATE PROCEDURE GetPedidosConArticulos() SELECT p.id_ped, p.tit_art, val_ven_art_artped Valor Artículo, can_art_artped FROM pedido p INNER JOIN articuloxpedido ap ON p.id_ped = ap.id_ped_artped INNER JOIN articulo a ON a.id_art = ap.id_art_artped • Visualizar los datos de las empresas fundadas entre el año 1991 y 1998. CREATE PROCEDURE GetEmpresasEntre9198() SELECT * FROM compañia WHERE comañofun BETWEEN 1991 AND 1998; • Visualizar todos los clientes organizados por apellido. CREATE PROCEDURE GetClientesOrganizados() SELECT * FROM cliente ORDER BY ape_cli; • Visualizar los datos de los incidentes que han tenido un(1) herido,este reporte debe visualizar la placa del automotor, con los respectivos datos de la póliza como son fecha de inicio, valor, estado y valor asegurado. CREATE PROCEDURE GetIncidentesConUnHerido() SELECT inciplaca, aseg.asefechainicio, aseg.asecosto, aseg.aseestado, aseg.asevalorasegurado FROM incidentes i INNER JOIN automotores a ON a.autoplaca = i.inciplaca INNER JOIN aseguramientos aseg ON aseg.aseplaca = a.autoplaca WHERE incicantheridos = 1; • Visualizar los incidentes del vehículo con placas " FLL420", este reporte debe visualizar la fecha, el lugar, la cantidad de heridos del incidente, la fecha de inicio la de expiración de la póliza y el valor asegurado. CREATE PROCEDURE GetIncidentesVehiculo() SELECT i.incifecha, i.incilugar, i.incicantheridos, aseg.asefechainicio, aseg.asefechaexpiracion, aseg.asevalorasegurado FROM incidentes i
  • 3. INNER JOIN automotores a ON a.autoplaca = i.inciplaca INNER JOIN aseguramientos aseg ON aseg.aseplaca = a.autoplaca WHERE a.autoplaca = 'FLL420' ; 4. Realice las Siguientes funciones en MySQL: • Cuente el número de estudiantes cuya edad sea mayor a 22. DELIMITER // CREATE FUNCTION NumeroEstudiantes() RETURNS INT BEGIN DECLARE numero INT; -- SELECT COUNT(1) INTO numero FROM estudiante WHERE edad_est > 22; -- RETURN numero; END // • Muestre el nombre y la edad del estudiante más joven. DELIMITER // CREATE FUNCTION NombreEdadEstudianteMasJoven() RETURNS VARCHAR(30) BEGIN DECLARE pnombre VARCHAR(30); DECLARE pedad VARCHAR(30); -- SELECT nom_est, edad_est INTO pnombre, pedad FROM estudiante WHERE edad_est = (SELECT MIN(edad_est) FROM estudiante); -- RETURN CONCAT(pnombre, " ", pedad); END// • Calcule el valor promedio de los cursos cuyas horas sean mayores a 40. DELIMITER // CREATE FUNCTION ValorPromedioCursos() RETURNS INT BEGIN DECLARE pPromedio DECIMAL(11, 4); -- SELECT AVG(valor_cur) INTO pPromedio FROM curso WHERE horas_cur > 40; -- RETURN pPromedio ; END//
  • 4. • Obtener el sueldo promedio de los profesores de la categoría 1. DELIMITER // CREATE FUNCTION SueldoPromedioProfesores() RETURNS INT BEGIN DECLARE pPromedio DECIMAL(11, 4); -- SELECT AVG(sal_prof) INTO pPromedio FROM profesor WHERE cate_prof = 1; -- RETURN pPromedio ; END// -- • Muestre el nombre del profesor con menor sueldo. DELIMITER // CREATE FUNCTION NombreProfesorMenorSueldo() RETURNS VARCHAR(60) BEGIN DECLARE pNombre VARCHAR(60); -- SELECT CONCAT(nom_prof, ape_prof) INTO pNombre FROM profesor WHERE sal_prof = (SELECT MIN(sal_prof) FROM profesor); -- RETURN pNombre ; END// 6. Construya los siguiente disparadores para controlar la actualización y borrado de registros -- profesor -- Creamos tabla de PROFESOR CREATE TABLE auditoria_profesor(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_nom_prof_anterior VARCHAR(30) NOT NULL , audi_ape_prof_anterior VARCHAR(30) NOT NULL , audi_cate_prof_anterior INT NOT NULL , audi_sal_prof_anterior INT NOT NULL , audi_nom_prof_nuevo VARCHAR(30) , audi_ape_prof_nuevo VARCHAR(30) , audi_cate_prof_nuevo INT , audi_sal_prof_nuevo INT ,
  • 5. , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_doc_prof VARCHAR(11) NOT NULL , audi_acccion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_profesor_update BEFORE UPDATE ON profesor FOR EACH ROW BEGIN -- INSERT INTO auditoria_profesor( audi_nom_prof_anterior , audi_ape_prof_anterior , audi_cate_prof_anterior , audi_sal_prof_anterior , audi_nom_prof_nuevo , audi_ape_prof_nuevo , audi_cate_prof_nuevo , audi_sal_prof_nuevo , audi_fechamodificacion , audi_usuario , audi_doc_prof , audi_acccion ) VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof , new.nom_prof , new.ape_prof , new.cate_prof , new.sal_prof, now(), current_user(), new.doc_prof, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE PROFESOR SET nom_prof = 'Martha XXX', ape_prof = 'Rojas XXX', cate_prof = 4 , sal_prof = 1000000 WHERE doc_prof = '63502720'; -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_profesor_delete AFTER DELETE ON profesor FOR EACH ROW BEGIN -- INSERT INTO auditoria_profesor( audi_nom_prof_anterior , audi_ape_prof_anterior , audi_cate_prof_anterior , audi_sal_prof_anterior , audi_fechamodificacion , audi_usuario ,
  • 6. audi_doc_prof , audi_acccion ) VALUES(old.nom_prof , old.ape_prof , old.cate_prof, old.sal_prof , now(), current_user(), old.doc_prof, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM PROFESOR WHERE doc_prof = '91216904'; --CURSO -- Creamos tabla de CURSO CREATE TABLE auditoria_curso(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_nom_curs_anterior VARCHAR(100) NOT NULL , audi_horas_cur_anterior INT NOT NULL , audi_valor_cur_anterior INT NOT NULL , audi_nom_curs_nuevo VARCHAR(100) , audi_horas_cur_nuevo INT , audi_valor_cur_nuevo INT , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_cod_curs VARCHAR(11) NOT NULL , audi_acccion VARCHAR(45) NOT NULL ); -- CREAMOR EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_curso_update BEFORE UPDATE ON curso FOR EACH ROW BEGIN -- INSERT INTO auditoria_curso( audi_nom_curs_anterior , audi_horas_cur_anterior , audi_valor_cur_anterior , audi_nom_curs_nuevo , audi_horas_cur_nuevo , audi_valor_cur_nuevo , audi_fechamodificacion , audi_usuario , audi_cod_curs , audi_acccion
  • 7. ) VALUES(old.nom_curs , old.horas_cur , old.valor_cur, new.nom_curs , new.horas_cur , new.valor_cur, now(), current_user(), new.cod_curs, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE curso SET nom_curs = 'Fundamentos de SQL XXX', horas_cur = 40, valor_cur = 1400000 WHERE cod_curs = '250067'; -- CREAMOR EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_curso_delete AFTER DELETE ON curso FOR EACH ROW BEGIN -- INSERT INTO auditoria_curso( audi_nom_curs_anterior , audi_horas_cur_anterior , audi_valor_cur_anterior , audi_fechamodificacion , audi_usuario , audi_cod_curs , audi_acccion ) VALUES(old.nom_curs , old.horas_cur , old.valor_cur, now(), current_user(), old.cod_curs, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO delete from estudiantexcurso where cod_cur_estcur = 289011; -- DELETE FROM curso WHERE cod_curs = '289011'; -- ESTUDIANTE -- Creamos tabla de ESTUDIANTE CREATE TABLE auditoria_estudiante(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_nom_est_anterior VARCHAR(30) NOT NULL , audi_ape_est_anterior VARCHAR(30) NOT NULL , audi_edad_est_anterior INT (11) NOT NULL , audi_nom_est_nuevo VARCHAR(30) , audi_ape_est_nuevo VARCHAR(30) , audi_edad_est_nuevo INT , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_doc_est
  • 8. VARCHAR(11) NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_estudiante_update BEFORE UPDATE ON estudiante FOR EACH ROW BEGIN -- INSERT INTO auditoria_estudiante( audi_nom_est_anterior , audi_ape_est_anterior , audi_edad_est_anterior , audi_nom_est_nuevo , audi_ape_est_nuevo , audi_edad_est_nuevo , audi_fechamodificacion , audi_usuario , audi_doc_est , audi_accion ) VALUES(old.nom_est , old.ape_est , old.edad_est, new.nom_est , new.ape_est , new.edad_est , now(), current_user(), new.doc_est, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE ESTUDIANTE SET nom_est = 'Jonatan XXX', ape_est = 'Ardila XXX', edad_est = 17 WHERE doc_est = '1098098097'; -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_estudiante_delete AFTER DELETE ON estudiante FOR EACH ROW BEGIN -- INSERT INTO auditoria_estudiante( audi_nom_est_anterior , audi_ape_est_anterior , audi_edad_est_anterior , audi_fechamodificacion , audi_usuario , audi_doc_est , audi_accion ) VALUES(old.nom_est , old.ape_est , old.edad_est, now(), current_user(), old.doc_est, 'Registro Eliminado'); END;//
  • 9. --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM estudiantexcurso where doc_est_estcur = 91245678; DELETE FROM estudiante WHERE doc_est = '91245678'; mysql>create table Estudiante(doc_est varcharalterEstudiante(11) not null,nom_est varchar(30) not null,ape_est varchar(30) not null,edad_est int not null,primary key(doc_est) ); -- automotores --Creamos tabla de AUTOMOTORES CREATE TABLE auditoria_automotores(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_Automarca_anterior VARCHAR(30) NOT NULL , audi_Autotipo_anterior INT NOT NULL , audi_Automodelo_anterior INT (11) NOT NULL , audi_Autonumpasajeros_anterior INT , audi_Autocilindraje_anterior INT , audi_Autonumchasis_anterior VARCHAR(30) , audi_Automarca_nuevo VARCHAR(30) , audi_Autotipo_nuevo INT , audi_Automodelo_nuevo INT (11) , audi_Autonumpasajeros_nuevo INT , audi_Autocilindraje_nuevo INT , audi_Autonumchasis_nuevo VARCHAR(30) , x DATETIME , audi_usuario VARCHAR(50) , audi_autoplaca VARCHAR(6) NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_automotores_update BEFORE UPDATE ON automotores FOR EACH ROW BEGIN -- INSERT INTO auditoria_automotores( audi_Automarca_anterior , audi_Autotipo_anterior , audi_Automodelo_anterior,
  • 10. audi_Autonumpasajeros_anterior, audi_Autocilindraje_anterior , audi_Autonumchasis_anterior, audi_Automarca_nuevo , audi_Autotipo_nuevo , audi_Automodelo_nuevo , audi_Autonumpasajeros_nuevo , audi_Autocilindraje_nuevo , audi_Autonumchasis_nuevo , audi_fechamodificacion , audi_usuario , audi_autoplaca , audi_accion ) VALUES(old.Automarca, old.Autotipo , old.Automodelo , old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis , new.Automarca, new.Autotipo , new.Automodelo , new.Autonumpasajeros , new.Autocilindraje, new.Autonumchasis , now(), current_user(), new.autoplaca, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE Automotores SET Automarca = 'chevrolet corsa ACTIVE', Autotipo = 1, Automodelo = 2003 , Autonumpasajeros = 8 , Autocilindraje = 1800 , Autonumchasis = 'wywzzz167kk009d45' WHERE autoplaca = 'FLL420'; -- CREAMOR EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_automotores_delete AFTER DELETE ON automotores FOR EACH ROW BEGIN -- INSERT INTO auditoria_automotores( audi_Automarca_anterior , audi_Autotipo_anterior , audi_Automodelo_anterior, audi_Autonumpasajeros_anterior, audi_Autocilindraje_anterior , audi_Autonumchasis_anterior, audi_usuario , audi_autoplaca , audi_fechamodificacion , audi_accion ) VALUES(old.Automarca,old.Autotipo , old.Automodelo , old.Autonumpasajeros, old.Autocilindraje , old.Autonumchasis ,
  • 11. now(), current_user(), old.autoplaca, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM aseguramientos where aseplaca = 'KJQ920'; DELETE FROM automotores WHERE autoplaca = 'KJQ920'; select * from auditoria_automotores; -- aseguramientos -- Creamos tabla de ASEGURAMIENTOS CREATE TABLE auditoria_Aseguramientos(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_asefechainicio_anterior DATE NOT NULL , audi_asefechaexpiracion_anterior DATE NOT NULL , audi_asevaloraegurado_anterior INT NOT NULL , audi_aseestado_anterior VARCHAR(30) NOT NULL , audi_asecosto_anterior INT NOT NULL , audi_aseplaca_anterior VARCHAR(20) NOT NULL , audi_asefechainicio_nuevo DATE , audi_asefechaexpiracion_nuevo DATE , audi_asevaloraegurado_nuevo INT , audi_aseestado_nuevo VARCHAR(30) , audi_asecosto_nuevo INT , audi_aseplaca_nuevo VARCHAR(20) , audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_asecodigo INT NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_aseguramientos_update BEFORE UPDATE ON aseguramientos FOR EACH ROW
  • 12. BEGIN -- INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior , audi_asefechaexpiracion_anterior , audi_asevaloraegurado_anterior , audi_aseestado_anterior , audi_asecosto_anterior , audi_aseplaca_anterior , audi_asefechainicio_nuevo , audi_asefechaexpiracion_nuevo , audi_asevaloraegurado_nuevo , audi_aseestado_nuevo , audi_asecosto_nuevo , audi_aseplaca_nuevo , audi_fechamodificacion , audi_usuario , audi_asecodigo , audi_accion ) VALUES(old.asefechainicio, old.asefechaexpiracion , old.asevalorasegurado , old.aseestado, old.asecosto, old.aseplaca, new.asefechainicio, new.asefechaexpiracion , new.asevalorasegurado , new.aseestado , new.asecosto, new.aseplaca, now(), current_user(), new.asecodigo , 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE aseguramientos SET asefechainicio = '2012-10-10', asefechaexpiracion = '2013-10-30', asevalorasegurado = 80000000, aseestado = 'Vigente', asecosto = 700000, aseplaca ='FLL420' WHERE asecodigo = '2'; -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_aseguramientos_delete AFTER DELETE ON aseguramientos FOR EACH ROW BEGIN -- INSERT INTO auditoria_aseguramientos( audi_asefechainicio_anterior , audi_asefechaexpiracion_anterior ,
  • 13. audi_asefechaexpiracion_anterior , audi_asevaloraegurado_anterior , audi_aseestado_anterior , audi_asecosto_anterior , audi_aseplaca_anterior , audi_fechamodificacion , audi_usuario , audi_asecodigo , audi_accion ) VALUES(old.asefechainicio , old.asefechaexpiracion , old.asevalorasegurado, old.aseestado, old.asecosto, old.aseplaca, now(), current_user(), old.asecodigo, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM aseguramientos WHERE asecodigo = '2'; -- incidentes --Creamos tabla de INCIDENTES CREATE TABLE auditoria_incidentes(id_audi INT(11) AUTO_INCREMENT PRIMARY KEY, audi_incifecha_anterior DATE NOT NULL , audi_inciplaca_anterior VARCHAR(6) NOT NULL , audi_incilugar_anterior VARCHAR(40) NOT NULL , audi_incicantheridos_anterior INT NOT NULL , audi_incicanfatalidades_anterior INT NOT NULL , audi_incicanautosinvolucrados_anterior INT NOT NULL , audi_incifecha_nuevo DATE , audi_inciplaca_nuevo VARCHAR(6) , audi_incilugar_nuevo VARCHAR(40) , audi_incicantheridos_nuevo INT , audi_incicanfatalidades_nuevo INT , audi_incicanautosinvolucrados_nuevo INT ,
  • 14. audi_fechamodificacion DATETIME , audi_usuario VARCHAR(50) , audi_incicodigo INT NOT NULL , audi_accion VARCHAR(45) NOT NULL ); -- CREAMOS EL TRIGGER PARA LA ACTUALIZACIÓN delimiter // CREATE TRIGGER trg_incidentes_update BEFORE UPDATE ON incidentes FOR EACH ROW BEGIN -- INSERT INTO auditoria_incidentes(audi_incifecha_anterior , audi_inciplaca_anterior , audi_incilugar_anterior , audi_incicantheridos_anterior , audi_incicanfatalidades_anterior , audi_incicanautosinvolucrados_anterior , audi_incifecha_nuevo , audi_inciplaca_nuevo , audi_incilugar_nuevo , audi_incicantheridos_nuevo , audi_incicanfatalidades_nuevo , audi_incicanautosinvolucrados_nuevo , audi_fechamodificacion , audi_usuario , audi_incicodigo , audi_accion ) VALUES(old.incifecha , old.inciplaca , old.incilugar, old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados, new.incifecha , new.inciplaca , new.incilugar , new.incicantheridos, new.incicanfatalidades,new.incicanautosinvolucrados, now(), current_user(), new.incicodigo, 'Actualización'); END;// -- PROBAMOS ACTUALIZANDO UN REGISTRO UPDATE incidentes SET incifecha = '2012-11-11', inciplaca = 'FLL420', incilugar = 'San Gil', incicantheridos = 2, incicanfatalidades = 3, incicanautosinvolucrados = 4 WHERE incicodigo = '1';
  • 15. -- CREAMOS EL TRIGGER PARA el delete delimiter // CREATE TRIGGER trg_auditoria_incidentes_delete AFTER DELETE ON incidentes FOR EACH ROW BEGIN -- INSERT INTO auditoria_incidentes(audi_incifecha_anterior , audi_inciplaca_anterior , audi_incilugar_anterior , audi_incicantheridos_anterior , audi_incicanfatalidades_anterior , audi_incicanautosinvolucrados_anterior , audi_fechamodificacion , audi_usuario , audi_incicodigo , audi_accion ) VALUES(old.incifecha , old.inciplaca , old.incilugar, old.incicantheridos , old.incicanfatalidades,old.incicanautosinvolucrados, now(), current_user(), old.incicodigo, 'Registro Eliminado'); END;// --PROBAMOS ELIMINANDO UN REGISTRO DELETE FROM INCIDENTES where incicodigo = 3; --Solucion_Laboratorio_LenguajeTransaccional.txt