Вы находитесь на странице: 1из 6

Diplomado Afinación y Rendimiento de Base de Datos Fernando Galarza Rodríguez

Laboratorio (triggers)
1.- Escribir un script creatrgpublishersyXY.sql que pueda crear un trigger de
nombre trgpublishersXY que ejecute actualización en cascada. Cuando se
realice una actualización en la tabla publishers se debe realizar la
actualización en cascada en la tabla titles. Dicho trigger debe realizar lo
siguiente:
a) Declare una variable de tipo int llamada @rows y dos variables char(6) de
nombre @old_id y @new_id.
b) Guarde el valor de @@rowcount
c) Verifique si más de un registro ha sido actualizado, se der asi, mande un
mensaje de error especificando que solo se puede actualizar una editorial
(Publisher) a un tiempo, con un número de error 40200.
d) Asigne los identificadores viejos y nuevos a @old_id y a @new_id y
actualice la tabla de titles usando estos valores según corresponda.
e) Despliegue un mensaje identificando el nombre de la editorial (Publisher),
el old_id, el new_id. Por ejemplo, “New Age Books(0736) ha sido actualizado
a 0777”
2.- Crear el trigger trgpublishersXY ejecutando el script anterior con isql
Isql –Ustudent –Psybase -Dstudentdb -SDIPLOXY –i creatrgpublishersXY.sql

3.- Establezca conexión a Adaptive Server Enterprise y pruebe el trigger


trgpublishersXY actualizando publishers con:
Update publishers
Set pub_id=”0777”
Where pub_id= “0736”
Muestre la salida y justifíquela.

Se modifican solo los registros que tenían el pub_id = 0736 a pub_id = 0777 en ambas
tablas

4.- Pruebe la restricción impuesta por el trigger sobre varias actualizaciones


ejecutando el siguiente comando:
Update publishers
Set pub_id=”0999”
Where state in (“MA”,”CA”)
Muestre la salida y justifíquela.
Manda el mensaje de error del trigger ya que no se pueden actualizar varios registros a la
vez.

5.- Ejecución de un trigger sobre titles que force una regla de negocio
compleja.
a) En su base de datos borre titles y vuelva a crearla a partir de la tabla
pubs2..titles
drop table titles
go
select title_id, title, type, pub_id
into titles
from pubs2..titles
go

6.- Escribir un script creatrgbusinessXY.sql que pueda crear un trigger de


nombre trgbusinessXY. El trigger debe asegurar que el tipo de libro se
encuentre en el correcto dominio (business, mod_cook, popular_comp,
psychology, trad_cook, UNDECIDED) y que los primeros dos caracteres del
identificador de title corresponda con el tipo (BU, MC, PC, PS, TC, NULL)
respectivamente
Dicho trigger debe realizar lo siguiente:
a) Cotejar que todos los tipos insertados o actualizados estén en un dominio
de valores correcto y en caso contrario, regresar un mensaje de error 30031
que indique “La modificación ha sido cancelada porque al menos un tipo de
libro no es válido.
b) Cotejar que todos los identificadoes de libros insertados o actualizados
tengan caracteres iniciales que correspondan al tipo de de libro, de lo
contrario, regresar un mensaje de error 30032 que indique “La modificación
ha sido cancelada porque al menos un identificador de libro no corresponde
con su tipo de libro.

7.- Crear el trigger trgbusinessXY ejecutando el script anterior con isql


Isql –Ustudent –Psybase –Dstudentdb –SDIPLOXY –i creatrgbusinessXY.sql

8.- Establezca conexión a Adaptive Server Enterprise y pruebe la restricción


del tipo de libro con el trigger authpubcityXY al ejecutar el siguiente
comando:
Insert into titles values (“BU1114”,”You Deserve That Promotion!”, “self_help”,
“1389”)
go
Muestre la salida y justifíquela.

No permite insertar ya que el Type =’selp_help’ y no se encuentra en el dominio de este


campo.

9.- Pruebe la restricción sobre el identificador de titles impuesta por el trigger


ejecutando el siguiente comando:
Insert into titles values (“BU1114”,”You Deserve That Promotion!”, “psychology”,
“1389”)
Muestre la salida y justifíquela.

No permite insertar ya que el tipo es psychology y el id debe iniciar con 'PS’ y en este caso
empieza con BU

10.- Pruebe la restricción sobre el identificador de titles impuesta por el


trigger ejecutando el siguiente comando:
Insert into titles values (“BU1114”,”You Deserve That Promotion!”, “psychology”,
“1389”)
Muestre la salida y justifíquela.

No permite insertar ya que el tipo es psychology y el id debe iniciar con 'PS’ y en este caso
empieza con BU

11.- Pruebe el trigger ejecutando el siguiente comando:


Insert into titles values (“BU1114”,”You Deserve That Promotion!”, “business”,
“1389”)
Muestre la salida y justifíquela.
Permite insentar sin problema ya que cumple con todas las restricciones el type
=’businnes’ y el title_id Empieza con BU title_id=’BU114’

Вам также может понравиться