investigación de los Avances tecnológicos del siglo XXI
Disparadores en sql
1. 1.- Crear un disparador que una vez que se actualice un código de vuelo en la tabla “aviones” se
actualicen los códigos correspondientes en las otras tablas.
1. Creamos primero el disparador.
2. Seguidamente insertamos un vuelo en todas las tablas con el código de vuelo 001, se
muestra el script utilizado y el resultado.
3. Ahora actualizaremos el código de vuelo en la tabla aviones.
4. Y ahora se muestra el resultado y podemos ver como aparece el código de vuelo
actualizado en la tabla aviones, así como en las demás tablas por efecto de la aplicación del
trigger que hemos creado anteriormente.
2. 2.- Hacer un procedimiento que se llame “ConsultarRetrasos”, y que muestre el código de vuelo de
aquellos vuelos que llegan con retraso. (Serán aquellos cuya “HoraFinSlot” de la tabla
“SlotLlegadas” sea mayor que la hora actual del sistema).
1. En la siguiente captura se muestra el código del procedimiento.
2. Insertamos ahora un vuelo en la tabla “SlotLlegadas” con “HoraFinSlot” a las 19:00 y se
muestra la tabla.
3. 3. Ahora comprobamos el correcto funcionamiento del procedimiento. NOTA: La hora que
marca mi sistema en el momento de la prueba es las 18:08, se muestra tanto el código de
llamada al procedimiento como el resultado obtenido.
3.- Crear un disparador que cada vez que se inserte un registro en “SlotSalidas” comprobará que el
código de vuelo existe en la tabla “aviones”, en caso contrario deshará la transacción. En caso de
que los datos sean correctos, hará lo siguiente:
• Insertar en la tabla “torres” los datos del registro.
• Actualizar el “EstadoActual” en aviones y poner el “SlotSalida ok”.
1. Creamos el trigger correspondiente que ejecute las operaciones pedidas, hay que aclarar,
que dentro de un trigger no está permitido incluir transacciones como pide el ejercicio, esto
no es necesario ya que dentro del trigger se comprobará si los datos introducidos al insertar
los datos den “SlotSalida”, hará la comprobación correspondiente, insertando y actualizando
los datos según proceda, como veremos a posteriori.
2. Seguidamente se muestran los estados de las tablas que intervienen antes de ejecutar las
inserciones correspondientes en la tabla “SlotSalidas” para comprobar el buen
funcionamiento del trigger.
4. 3. Se muestra ahora el código que realiza nuestras inserciones para comprobar la ejecución
del trigger. (Se desactiva el trigger que se realizó en el ejercicio 1 ya que interfiere en la
ejecución).
4. Se muestra ahora el estado en el que quedan las tablas después de realizar las inserciones
que ejecutan el trigger, se puede ver que el Código de vuelo coincidente en la tabla aviones
se inserta en la tabla torres y se actualiza el valor “EstadoActual” en la tabla aviones, la
inserción no coincidente en la tabla slotsalidas, así mismo no inserta ni actualiza nada como
nos pide en el ejercicio.
4.- Cada vez que actualicemos en la tabla “torre” la “HoraDeLlegadaReal” o la “HoraDeSalidaReal”
desaparecerá de la tabla “SlotLlegadas” o de la tabla “SlotSalidas” el registro del código
correspondiente y actualizará en la tabla “aviones” el “EstadoActual” y pondrá “Aterrizado” o
“Despegado” respectivamente.
5. NOTA: no realizado por falta de tiempo, aunque tampoco se me ocurre como hacer las
comprobaciones correspondientes para eliminar y actualizar las tablas correspondientes.
5.- Realizar un procedimiento que nos muestre los aviones que están volando en el momento
actual. Serán aquellos que no tienen “HoraLlegadaReal” asignada en “torre” y cuya “HoraFinSlot”
en “SlotLlegadas” tenga una diferencia menor o igual a cinco minutos con respecto a la hora actual
del sistema.
1. Codificamos el procedimiento correspondiente.
2. Se muestra ahora el estado de las tablas que intervienen y el resultado de la ejecución de
procedimiento.
NOTA: No consigo averiguar de momento la causa de que me cambie la “HoraFinSlot” en el vuelo
“002”