Anda di halaman 1dari 7

Regional Distrito Capital Sistema de Gestin de la Calidad

GUIA DE APRENDIZAJE CREAR TRIGGERS CON TRANSACT SQL

REGIONAL DISTRITO CAPITAL CENTRO DE GESTION DE MERCADOS, LOGISTICA Y TECNOLOGIAS DE LA INFORMACION


Sistema de Gestin de la Calidad

GUIA CREAR TRIGGERS CON TRANSACT SQL

Fecha: Mayo de 2013 Versin: 1 Pgina 2 de 7

Control del Documento


Nombre Autores Sandra Yanneth Rueda Guevara Elizabeth Zuiga Cargo Dependencia Regional Distrito Capital Regional Distrito Capital Firma Fecha mayo de 2011

Instructor

Asesora Pedaggica Revisin Aprobacin

Formadores Docentes

REGIONAL DISTRITO CAPITAL CENTRO DE GESTION DE MERCADOS, LOGISTICA Y TECNOLOGIAS DE LA INFORMACION


Sistema de Gestin de la Calidad

GUIA CREAR TRIGGERS CON TRANSACT SQL

Fecha: Mayo de 2013 Versin: 1 Pgina 3 de 7

1. IDENTIFICACIN DE LA GUIA DE APRENDIZAJE PROGRAMA DE FORMACION: PROYECTO ASOCIADO: MODALIDAD DE FORMACION: ACTIVIDAD DEL PROYECTO: Presencial Desarrollar la estructura de datos y la interfaz de usuario del sistema para el banco de proyectos 220501007 02 Construir la base de datos, a partir del modelo de datos determinado en el diseo del sistema, utilizando sistemas de gestin de base de datos, segn los protocolos establecidos en la organizacin. Creacin de Triggers en la base de datos, utilizando Transact SQL 20 horas Duracin de la gua de Aprendizaje: 4 horas ANLISIS Y DESARROLLO DE SISTEMAS DE INFORMACIN - ADSI

RESULTADOS DE APRENDIZAJE:

TAREA DE APRENDIZAJE DURACION

2. CARACTERIZACIN DE LA ACTIVIDAD DE APRENDIZAJE 2.1 Introduccin

Gracias al desarrollo de esta gua se lograr conocer el objetivo y la sintaxis para la creacin de Triggers, este aprendizaje le permitir, implementar la lgica de aplicacin a nivel de base de datos; esto quiere decir, que los desencadenadores o triggers, aplican directamente sobre las tablas de la base de datos o, incluso puede ser, sobre columnas especficas. Un trigger o desencadenador, es una clase especial de procedimiento almacenado, que se ejecuta automticamente cuando se produce un evento en el servidor de bases de datos. La importancia de su implementacin radica en que el administrador de la base de datos, podr minimizar el margen de error, especialmente, en los procesos de actualizacin de las tablas de la base de datos que tengan asociado el trigger. 2.2 Tarea de Aprendizaje Utilizando el editor SQLServerManagment Studio, y la base de datos Neptuno: 1. Crear un trigger que impida borrar informacion de la tabla categorias.
CREATE TRIGGER NoBorraCategoria ON Categoras FOR DELETE AS BEGIN ROLLBACK TRANSACTION /*devuelve la base de datos a su estado anterior*/ END

REGIONAL DISTRITO CAPITAL CENTRO DE GESTION DE MERCADOS, LOGISTICA Y TECNOLOGIAS DE LA INFORMACION


Sistema de Gestin de la Calidad

GUIA CREAR TRIGGERS CON TRANSACT SQL

Fecha: Mayo de 2013 Versin: 1 Pgina 4 de 7

Vamos a hacer que se dispare el trigger, as: DELETE FROM Categoras WHERE IdCategora >45 Al ejecutar la anterior sentencia se muestra el siguiente mensaje: Msg 3609, Level 16, State 1, Line 2 The transaction ended in the trigger. The batch has been aborted. Lo que nos presenta es el mensaje de la finalizacin de la transaccin por la accin del trigger. 2. Crear un tigger que impida cambiar el precio unitario de los productos CREATE TRIGGER NoCambiaPrecio ON Productos FOR UPDATE AS IF UPDATE(PrecioUnitario) BEGIN RAISERROR ('No se permite modificar precio',16,1)/*se coloca el mensaje de error, el nivel de gravedad del error, y estado*/ ROLLBACK TRANSACTION END

3. Crear un trigger que impida borrar Detalles de pedidos. 4. Ejecutar la siguiente sentencia:
CREATE TRIGGER NoCambiaFecha ON Pedidos FOR UPDATE AS IF UPDATE(FechaPedido) begin RAISERROR ('No se permite modificar la fecha de un pedido',16,1)/*se coloca el mensaje de error, el nivel de gravedad del error, y estado*/ ROLLBACK TRANSACTION END

5. Crear un trigger que impida modificar el cargo de los pedidos, solo si el nuevo cargo es menor al cargo actual. 6. Crear un trigger que impida modificar la fecha de vinculacin de un empleado, solo si la nueva fecha de vinculacin es menor a la fecha de vinculacin registrada. Las evidencias resultantes son: DE CONOCIMIENTO: Identificar las diferentes instrucciones que se utilizan en la creacin de triggers en las bases de datos. Identificar las utilidades que ofrecen los triggers en las bases de datos DE DESEMPEO: Observacin y valoracin del proceso en la solucin de un ejercicio prctico sobre creacin y

REGIONAL DISTRITO CAPITAL CENTRO DE GESTION DE MERCADOS, LOGISTICA Y TECNOLOGIAS DE LA INFORMACION


Sistema de Gestin de la Calidad

GUIA CREAR TRIGGERS CON TRANSACT SQL

Fecha: Mayo de 2013 Versin: 1 Pgina 5 de 7

utilizacin de triggers, de acuerdo con los requerimientos establecidos. 2.3 Proceso de Aprendizaje TRIGGER DML: El objetivo de crear este tipo de objetos en la base de datos es asegurar que se cumplan las reglas de aplicacin sobre la validacin de los datos que se insertan, modifican o borran en la base de datos; para ello las instrucciones de triggers DML utilizan dos tablas temporales denominadas inserted y deleted; Las cuales son creadas y administradas automticamente por SQL Server. La estructura de las tablas inserted y deleted es la misma que tiene la tabla que ha desencadenado la ejecucin del trigger. Inserted est disponible en las operaciones INSERT y UPDATE, en ella estn los valores resultantes despus de la insercin o actualizacin. En otras palabras, la tabla Inserted va a guardar los datos de nuevos registros, es decir los agregados a travs de un comando INSERT; pero tambin guardar, los nuevos datos para un registro existente, es decir los datos agregados con un comando UPDATE; por lo tanto, Inserted no participar en una operacin con el comando DELETE. Deleted est disponible en las operaciones UPDATE y DELETE, en ella se guardaran los valores anteriores a la ejecucin de la actualizacin o borrado. Es decir, en ella vamos a guardar todos los datos que sern borrados de las tablas de la base de datos. Por lo tanto, Deleted no participa en una operacin con el comando INSERT. Teniendo en cuenta que stas dos tablas son temporales, son creadas en memoria RAM; esto implica que tan pronto se cumplan las reglas de aplicacin, desaparecen. Sintaxis para la creacin de un trigger DML: CREATE TRIGGER nombre_trigger ON { table | view } { { { FOR | AFTER } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } AS [ { IF UPDATE (column) [ { AND | OR } UPDATE (column) ] [ ...n ] sql_statement [ ...n ] } } Argumentos nombre_trigger: Es el nombre del desencadenador. Un nombre de desencadenador debe cumplir las reglas de los identificadores y debe ser nico en la base de datos. Especificar el propietario del desencadenador es opcional. Table | view : Es la tabla o vista en que se ejecuta el desencadenador; algunas veces se denomina tabla del desencadenador o vista del desencadenador. Especificar el nombre del propietario de la tabla o vista es opcional. AFTER: Especifica que el desencadenador slo se activa cuando todas las operaciones

REGIONAL DISTRITO CAPITAL CENTRO DE GESTION DE MERCADOS, LOGISTICA Y TECNOLOGIAS DE LA INFORMACION


Sistema de Gestin de la Calidad

GUIA CREAR TRIGGERS CON TRANSACT SQL

Fecha: Mayo de 2013 Versin: 1 Pgina 6 de 7

especificadas en la instruccin SQL desencadenadora se han ejecutado correctamente. Adems, todas las acciones referenciales en cascada y las comprobaciones de restricciones deben ser correctas para que este desencadenador se ejecute. AFTER es el valor predeterminado, si slo se especifica la palabra clave FOR. Los desencadenadores AFTER no se pueden definir en las vistas. { [DELETE] [,] [INSERT] [,] [UPDATE] }: Son palabras clave que especifican qu instrucciones de modificacin de datos activan el desencadenador cuando se intentan en esta tabla o vista. Se debe especificar al menos una opcin. En la definicin del desencadenador se permite cualquier combinacin de stas, en cualquier orden. Si especifica ms de una opcin, seprelas con comas. AS: Son las acciones que va a llevar a cabo el desencadenador. IF UPDATE (column): Prueba una accin INSERT o UPDATE en una columna especificada, no se utiliza con operaciones DELETE. Se puede especificar ms de una columna. Como el nombre de la tabla se especifica en la clusula ON, no lo incluya antes del nombre de la columna en una clusula IF UPDATE. Para probar una accin INSERT o UPDATE para ms de una columna, especifique una clusula UPDATE(column) separada a continuacin de la primera. IF UPDATE devolver el valor TRUE en las acciones INSERT porque en las columnas se insertaron valores explcitos o implcitos (NULL). Nota La clusula IF UPDATE (column) funciona de forma idntica a una instruccin IF, IF...ELSE o WHILE, y puede utilizar el bloque BEGIN...END. UPDATE(column) puede utilizarse en cualquier parte dentro del cuerpo del desencadenador. column: Es el nombre de la columna que se va a probar para una accin INSERT o UPDATE. Esta columna puede ser de cualquier tipo de datos admitido por SQL Server. No obstante, no se pueden utilizar columnas calculadas en este contexto. Para obtener ms informacin, consulte Tipos de datos. sql_statement: Son las condiciones y acciones del desencadenador. Las condiciones del desencadenador especifican los criterios adicionales que determinan si los intentos de las instrucciones DELETE, INSERT o UPDATE hacen que se lleven a cabo las acciones del desencadenador. Los triggers estn dentro de la transaccin original (Insert, Delete o Update) por lo cual si dentro de nuestro trigger hacemos un RollBack Tran, no solo estaremos echando atrs nuestro trigger sino tambin toda la transaccin; en otras palabras si en un trigger ponemos un RollBack Tran, la transaccin de Insert, Delete o Update volver toda hacia atrs. Podemos activar desactivar un Trigger, se hace a travs de las instrucciones DISABLE para desactivarlo ENABLE para activarlo; podemos desactivar activar un trigger en particular para una tabla o todos en general para una tabla.
-- Desactiva el trigger TR_CUENTAS DISABLE TRIGGER TR_CUENTAS ON CUENTAS GO -- activa el trigger TR_CUENTAS ENABLE TRIGGER TR_CUENTAS ON CUENTAS GO -- Desactiva todos los trigger de la tabla CUENTAS ALTER TABLE CUENTAS DISABLE TRIGGER ALL GO -- Activa todos los trigger de la tabla CUENTAS

REGIONAL DISTRITO CAPITAL CENTRO DE GESTION DE MERCADOS, LOGISTICA Y TECNOLOGIAS DE LA INFORMACION


Sistema de Gestin de la Calidad

GUIA CREAR TRIGGERS CON TRANSACT SQL

Fecha: Mayo de 2013 Versin: 1 Pgina 7 de 7

ALTER TABLE CUENTAS ENABLE TRIGGER ALL

2.4 Ambientes de Aprendizaje La actividad debe desarrollarse en aula dispuesta con equipos de cmputo con la suite de desarrollo y el servidor de base de datos SqlServer 2005 o superior, con acceso a Internet 2.5 Evaluacin del aprendizaje Para valorar el alcance del resultado de aprendizaje, se tendr en cuenta: La participacin oportuna del aprendiz en el desarrollo de las sentencias solicitas. Que el aprendiz optimice los recursos del aula en el desarrollo de las actividades propuestas y este acorde con las normas institucionales. El uso del administrador de SQLServer y la navegabilidad por el mismo. Que la respuesta a preguntas formuladas sobre el tema, durante el desarrollo de las actividades propuestas, este acorde con la lectura y el aprendiz aporte con informacin adicional, si es el caso. Y por ltimo, la creacin de triggers en la base de datos y la manipulacin de los mismos, utilizando adecuadamente las sentencias SQL. 2.6 Conclusiones Se espera conseguir a travs de la realizacin de esta actividad, las competencias necesarias para definir, crear y utilizar, de manera eficaz, los triggers necesarios en las reglas de aplicacin a nivel de las bases de datos; para dar cumplimiento a la operatividad de cualquier sistema. 2.7 Bibliografa Estas son las referencias consultadas. IntroducionaSps.ASP.htm translate.htm Triggers-en-Transact-SQL.aspx.htm Uso de Triggers en SQL Server Alex Jimnez.html.

Anda mungkin juga menyukai