Você está na página 1de 4

SQL AVANZADO

Trabajar con la tabla ALUMNO creada en la actividad


de la Unidad 3
1. Crear un procedimiento almacenado que permita grabar
datos a la Tabla ALUMNO.
DELIMITER $$
CREATE PROCEDURE `bdcolegio`.`GRABAR_DATOS_ALUMNOS`
(
Cdigo INT(5),
Nombre VARCHAR(30),
Apellido VARCHAR(35),
Direccin VARCHAR(75),
Email VARCHAR(45),
Fecha_Nacimiento DATE,
Distrito VARCHAR(70),
Pensin VARCHAR(15)
)
BEGIN
INSERT INTO alumno VALUES (Cdigo, Nombre, Apellido, Direccin,
Email, Fecha_Nacimiento, Distrito, Pensin);
END$$
DELIMITER ;

2. Crear un procedimiento almacenado


actualizar datos a la tabla ALUMNO.

que

permita

DELIMITER $$
CREATE PROCEDURE `bdcolegio`.`ACTUALIZAR_DATOS_ALUMNOS`
(
pCdigo INT(5),
Nombre VARCHAR(30),
Apellido VARCHAR(35),
Direccin VARCHAR(75),
Email VARCHAR(45),
Fecha_Nacimiento DATE,
Distrito VARCHAR(70),
Pensin VARCHAR(15)
)
BEGIN
UPDATE alumno SET Nombre=Nombre, Apellido=Apellido,
Direccin=Direccin, Email=Email,
Fecha_Nacimiento=Fecha_Nacimiento, Distrito=Distrito,
Pensin=Pensin WHERE Cdigo=pCdigo;
END$$
DELIMITER ;

3. Crear un trigger que no permita grabar un nombre y


apellido que ya exista en la tabla ALUMNO.

SELECT * FROM XT_RESPALDO_ALUMNO


CREATE TRIGGER GRABAR_NOT_APE_NOM
ON alumno FOR INSERT
AS
DECLARE
nom VARCHAR(30),
apellid VARCHAR(35)
SELECT
nom=Nombre
apellid=Apellido
FROM inserted
IF (SELECT COUNT(*) FROM alumno WHERE Nombre=nom AND
Apellido=apellid)>1
BEGIN
RaisError('Nombre, Apellido ya existe',0,1)
ROLLBACK TRANSACTION
END

4. Crear un trigger que no permita grabar si en el campo de


fecha de nacimiento se ingresa una fecha mayor al ao
01/01/95

CREATE TRIGGER GRABAR


ON fecha FOR INSERTED
AS

DECLARE fecha DATE


SELECT fecha=mat_fecha from inserted
IF (select count (*) FROM matricula WHERE mat_fecha >
01/01/1995)
BEGIN
RaisError (Fecha de matrcula es mayor a 01/01/1995)
ROLLBACK TRANSACTION
END

Você também pode gostar