Bases de datos relacionales
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

Bases de Datos Relacionales PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on
  • Presentation posted in: General

Bases de Datos Relacionales. TRIGGERS. Preparó: Ismael Castañeda Fuentes Fuentes:Manuales Sybase Manuales SQL Server Manuales Oracle. Trigger. Un trigger es un procedimiento almacenado asociado con una tabla, el cual se ejecuta automáticamente cuando se modifica un dato de esa tabla.

Download Presentation

Bases de Datos Relacionales

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Bases de datos relacionales

Bases de Datos Relacionales

TRIGGERS

Preparó: Ismael Castañeda Fuentes

Fuentes:Manuales Sybase

Manuales SQL Server

Manuales Oracle


Trigger

Trigger

Un trigger es un procedimiento almacenado asociado con una tabla, el cual se ejecuta automáticamente cuando se modifica un dato de esa tabla


Trigger aplicaciones t picas

Trigger - Aplicaciones Típicas

  • Hacer modificarciones en cascada sobre tablas relacionadas

  • Deshacer cambios que violan la integridad de los datos

  • Forzar restricciones que son muy complejas para reglas y restricciones

  • Mantener datos duplicados

  • Mantener columnas con datos derivados

  • Hacer ajustes de registros


Trigger definici n

Trigger - Definición

  • Un trigger se define asociado con una tabla para una o más sentencias de manipulación de datos

    • Un trigger se puede definir para insert, update, o delete o cualquier combinación de ellos


Trigger activaci n

Trigger - Activación

  • Cuando se modifica un dato en una tabla que tiene declarado un trigger para esa sentencia, el trigger se “dispara”

    • El trigger se dispara una vez, independientemente del número de filas afectadas

    • El trigger se dispara aunque no hayan filas afectadas


Triggers and transacciones

Triggers and transacciones

  • Un trigger es parte de la transacción que causa el disparo

  • El trigger puede deshacer:

    • Así mismo solamente

    • Así mismo y la sentencia que causa el disparo

    • La transacción total


Trigger reglas

Trigger - Reglas

  • Los triggers pueden:

    • Declarar variables locales

    • Invocar procedimientos almacenados

  • Los triggers no pueden:

    • Llamarse directamente

    • Usar parámetros

    • Definirse sobre tablas temporales o vistas

    • Crear objetos permanentes de base de datos

  • Las operaciones con registro mínimo (como select into) no disparan los triggers


Trigger crear

Trigger - Crear

  • Sintaxissimplificada:

    create triggertrigger_name

    ontable_name

    for {insert | update | delete} [, {insert | update | delete} ...]

    as

    sql_statements


Borrar triggers

Borrar Triggers

  • Sintaxis simplificada:

    droptriggertrigger_name


Procedimientos del sistema para triggers

Procedimientos del sistema para Triggers

  • sp_depends {table_name | trigger_name}

    • Cuando se da el nombre de tabla, lista todos los objetos (incluyendo triggers) de la misma base de dtos

    • Cuando se da el nombre de trigger, lista todas las tablas referencias

  • sp_helptrigger_name

    • Muestra información del trigger

  • sp_helptexttrigger_name

    • Muestra el código usado para crear el trigger

  • sp_renameold_trigger_name, new_trigger_name

    • Cambia el nombre del trigger


Trigger tablas inserted y deleted

Trigger - Tablas inserted y deleted

  • inserted y deleted son dos tablas que se crean automáticamente cada vez que se dispara un trigger

    • inserted almacena cualquier fila que se vaya a añadir a la tabla

    • deleted almacena cualquier fila que se vaya a borrar de la tabla


Trigger borrados

Trigger - Borrados

  • A delete adds rows to the deleted table


Trigger inserciones

Trigger - Inserciones

  • insert añade filas en la tabla inserted


Trigger actualizaciones

Trigger - Actualizaciones

Un update añade filas en ambas tablas


Trigger reglas para tablas inserted y deleted

Trigger - Reglas para tablas inserted y deleted

  • Ambas tablas tienen las mismas columnas que la tabla asociada al trigger

  • El trigger puede consultar datos de las dos tablas

    • Otros procesos no pueden consultar datos de las dos tablas

  • El trigger no puede modificar datos en las dos tablas

  • Cada anidamiento de triggers tiene sus propias tablas inserted y deleted

    • Si un trigger modifica datos de su tabla asociada, esos cambios no se reflejan en las tablas inserted and deleted de ese trigger


Triggers y rollbacks

Triggers y rollbacks

  • Tres tipos de rollbacks:

    • Deshacer el trigger

    • Deshacer el trigger y la sentencia que lo disparó

    • Deshacer toda la transacción


Deshacer un trigger

Deshacer un trigger

  • Para deshacer un trigger, declarar un punto de grabación y luego hacer el rollback

    • Un rollback sin punto de grabación deshace toda la transacción

Procedimiento almacenado

Caso Abegin tran...insert ...print "in sp"...commit tranprint "sp done"

Trigger

save tran s1

....

rollback tran s1

print “tr done”

return

Procedimiento almacenado

Caso Bbegin tran...(este casoinsert ...ocaciona unprint "in sp"error)...commit tranprint "sp done"

Trigger

begin tran s2

....

rollback tran s2

print “tr done”

return


Deshacer un trigger1

Procedimiento almacenado

Caso Cbegintran...insert ...print "in sp"...committranprint "sp done"

Trigger

........rollbacktrigger

print “tr done”

return

Deshacer un trigger

  • rollbacktrigger deshace el trigger y la sentencia que lo disparó

  • Sintaxis:

    rollbacktrigger [withraiserrorerror_number [error_statement] ]


Deshacer una transacci n

Procedimiento almacenado

Case Dbegin tran...insert ...print "in sp"...commit tranprint "sp done"

Trigger

begin tran

...rollback tran

print "tr done”

return

Deshacer una transacción

Para deshacer toda la transacción donde está inmerso el trigger, ejecutar un rollback sin un punto de grabación

Procedimiento almacenado

Case Ebegin tran...insert ...print "in sp"...commit tranprint "sp done"

Trigger

........Rollback tran

print “tr done”

return


Trigger pr cticas recomendadas

Trigger - Prácticas recomendadas

  • Consideraciones al elaborar triggers:

    • @@rowcount

    • if update

    • triggers anidados

    • triggers recursivos


Trigger if update

Trigger - if update

  • if update es una condición que le permite a un trigger chequear si ha habido un cambio en una determinada columna

  • Sólo se puede usar en triggers

  • Usualmente se usa para chequear si el valor de una llave primaria ha cambiado

  • Sintaxis simplificada:

    if update (column_name) [ {and | or} update (column_name)]...


Triggers anidados

Triggers anidados

  • Un trigger anidado es un trigger que se dispara en respuesta a una modificación hecha en un trigger

  • Nivel máximo de anidamiento: 16

    • Tanto los procedimientos almacenados como los triggers cuentan en la determinación del nivel máximo

    • @@nestlevelretorna el nivel de anidamiento


Triggers recursivos

Triggers recursivos

  • Un trigger recursivo es aquel que se dispara cuando modifica su propia tabla

  • Por default, un trigger que modifica su propia tabla no causa un disparo recursivo del trigger


M todos para integridad de datos

Métodos para integridad de datos

Dos métodos para implementar integridad de datos


Actualizaci n de valores llave

Actualización de valores llave

  • Solamente en triggers es posible borrar o actualizar una llave primaria

  • Sólo en triggers es posible hacer cambios en cascada

* Valores de llavesprimarias se puedenactualizar o borrarsi no estánreferencidos en llavesforáneas


Restricciones versus triggers

Restricciones versus triggers

  • Ventajas de las restricciones:

    • Las restricciones (y reglas) son más rápidas que los triggers

    • Las restricciones no requieren codificación adicional

    • Es mejor para chequear datos antes de ingresarlos a la base de datos

  • Ventajas de los triggers:

    • Muy flexible

      • Los triggers pueden hacer cualquier cosa que se pueda codificar

    • Mejor para las reglas complejas del negocio que no se pueden expresar como restricciones referenciales tales como actualizaciones o borrados en cascada


  • Login