SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
Connexions module: m18780 1
Disparadores en bases de datos
relacionales∗
Miguel-Angel Sicilia
This work is produced by The Connexions Project and licensed under the
Creative Commons Attribution License
†
Abstract
Se introduce el concepto de disparador (trigger) en bases de datos relacionales, y la sintaxis SQL para
crearlos.
1 Disparadores en SQL
En ocasiones es necesario mantener restricciones en la base de datos que no pueden expresarse directamente
con las sentencias de creación de tablas como CREATE TABLE. Por ejemplo, en una aplicación bancaria, si un
cliente se queda sin saldo para un pago en una cuenta (es decir, entra en números rojos), se deberá crear
automáticamente un crédito personal para el descubierto. Si en la base de datos teníamos una tabla CUENTAS
con la información de las cuentas bancarias (incluyendo un atributo saldo), entonces deberíamos observar
la tabla, y cuando se ejecutase una sentencia UPDATE sobre la misma, habría que comprobar si se cumple la
condición saldo0, en cuyo caso, habría que crear una tupla en la tabla PRESTAMOS. Esta idea de observar
cambios es la que se implementa en el concepto de disparador (trigger).
Los disparadores (triggers) son funciones denidas por el diseñador de la base de datos que se ejecutan
cuando se producen ciertas operaciones en las bases de datos. Más concretamente, son programas a los que
se les da un nombre de objeto en la base de datos, se asocia con una tabla determinada, y se activa cuando
ocurre un cierto tipo de evento en esa tabla, como una inserción, actualización o borrado. Si un evento
ocurre, el administrador de disparadores dentro del gestor de bases de datos llama a la función adecuada
para procesar el evento, por lo que cuando ejecutamos un INSERT, DELETE o UPDATE, es posible que se
desencadene la ejecución de disparadores, cosa que hay que tener muy en cuenta al desarrollar y evaluar
aplicaciones.
1.1 Un primer ejemplo
Pensemos en una aplicación bancaria en la que los CLIENTES tienen CUENTAS y PRESTAMOS. El siguiente
diagrama muestra un esquema simplicado para esta base de datos.
∗Version 1.1: Dec 8, 2008 11:49 am US/Central
†http://creativecommons.org/licenses/by/2.0/
http://cnx.org/content/m18780/1.1/
Connexions module: m18780 2
Figure 1
Inicialmente, el banco tiene la política de no permitir que un cliente quede en números rojos. Podríamos
pensar en crear un disparador para esa tarea.
1.2 Un primer ejemplo, mejor pensado
1.3 Sintaxis
La sintaxis para la creación de disparadores en SQL es la siguiente:
CREATE TRIGGER nombre
momento evento
ON nombre_tabla FOR EACH [ROW|SENTENCE] sentencia
El nombre del disparador se usará si se desea eliminar el disparador, concretamente, se usa como argu-
mento del comando DROP TRIGGER. El resto de la sintaxis se describe a continuación:
• La palabra siguiente (momento) determina si la función debe ser llamada antes (BEFORE) o después
(AFTER) del evento.
• El siguiente elemento del comando determina qué eventos dispararán la ejecución (INSERT, DELETE,
UPDATE). Es posible especicar múltiples eventos utilizado el operador OR.
http://cnx.org/content/m18780/1.1/
Connexions module: m18780 3
• El nombre de la relación (nombre_tabla) determinará la tabla afectada por el evento. La instrucción
FOR EACH determina si el disparador se ejecutará para cada la afectada o bien antes (o después) de
que la secuencia se haya completado.
• La sentencia es la denición del código que se invocará.
NOTA: En algunos gestores como MySQL 5.1 solo se soportan disparadores que se ejecutan por cada tupla
afectada (FOR EACH ROW), pero otros permiten la sintaxis FOR EACH STATEMENT que se ejecutan por sentencia.
Es importante consultar la documentación del gestor de bases de datos para saber exáctamente con qué
sentencias se activan los disparadores. Por ejemplo, DROP TABLE en MySQL no utiliza DELETE, por lo que
no ejecuta los disparadores asociados a DELETE. Sin embargo,
Una característica importante de los disparadores es que no se puede tener más de uno para una deter-
minada combinación de tabla, evento y momento. Es decir, no se pueden denir dos disparadores sobre la
tabla T siendo ambos AFTER INSERT. Esto hace que si hay diferentes acciones a realizar para esa combinación,
habrá que programar el disparador para que ejecute condicionalmente unas acciones u otras.
1.4 Ejecución encadenada
Si una disparador ejecuta sentencias SQL, entonces estas funciones pueden disparar otros disparadores (o
dispararse a sí mismas). A esto se le llama ejecución de disparadores en cascada.
No hay ninguna limitación explicita en cuanto al número de niveles de cascada o encadenamiento. Si un
disparador se ejecuta por un INSERT en una tabla T e inserta una nueva tupla en la misma tabla, se invocará
de nuevo al mismo disparador (por el nuevo INSERT ejecutado en el código del disparador).
1.5 Funciones y procedimientos almacenados
http://cnx.org/content/m18780/1.1/

Más contenido relacionado

La actualidad más candente

Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
Ziscko
 
Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Seguridad Oracle 11g R2
Seguridad Oracle 11g R2
Carmen Soler
 

La actualidad más candente (19)

Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Statement
StatementStatement
Statement
 
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)
 
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Sintaxis de START TRANSACTION
Sintaxis de START TRANSACTIONSintaxis de START TRANSACTION
Sintaxis de START TRANSACTION
 
Trigger
TriggerTrigger
Trigger
 
Vistas en mySql
Vistas en mySqlVistas en mySql
Vistas en mySql
 
Vistas en bases de datos
Vistas en bases de datosVistas en bases de datos
Vistas en bases de datos
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11g
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
VISTAS
VISTASVISTAS
VISTAS
 
Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Seguridad Oracle 11g R2
Seguridad Oracle 11g R2
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Datos UNDO en Oracle
Datos UNDO en OracleDatos UNDO en Oracle
Datos UNDO en Oracle
 
TRIGGERS Cliente - servidor
TRIGGERS Cliente - servidorTRIGGERS Cliente - servidor
TRIGGERS Cliente - servidor
 

Destacado (8)

Disparadores
DisparadoresDisparadores
Disparadores
 
Histerese, Bi-estabilidade e Desertificação
Histerese, Bi-estabilidade e DesertificaçãoHisterese, Bi-estabilidade e Desertificação
Histerese, Bi-estabilidade e Desertificação
 
Modulo 3
Modulo 3Modulo 3
Modulo 3
 
Sobre El Parlamentarismo Carl Schmitt www.iestudiospenales.com.ar
Sobre El Parlamentarismo Carl  Schmitt www.iestudiospenales.com.arSobre El Parlamentarismo Carl  Schmitt www.iestudiospenales.com.ar
Sobre El Parlamentarismo Carl Schmitt www.iestudiospenales.com.ar
 
Trigger schmitt - Generador de pulsos de Reset -
Trigger  schmitt - Generador de pulsos de Reset -Trigger  schmitt - Generador de pulsos de Reset -
Trigger schmitt - Generador de pulsos de Reset -
 
Modulo 1 - Proteus
Modulo 1 - ProteusModulo 1 - Proteus
Modulo 1 - Proteus
 
SOLUÇÕES - EXERCÍCIOS
SOLUÇÕES - EXERCÍCIOSSOLUÇÕES - EXERCÍCIOS
SOLUÇÕES - EXERCÍCIOS
 
Disparadores
DisparadoresDisparadores
Disparadores
 

Similar a Trigger

Disparadores
DisparadoresDisparadores
Disparadores
elylupita
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
demoiselle
 
Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollback
linis129
 
programacion por capas
programacion por capasprogramacion por capas
programacion por capas
luisitoman
 
Análisis y diseño ii sql php
Análisis y diseño ii sql phpAnálisis y diseño ii sql php
Análisis y diseño ii sql php
lina9203
 

Similar a Trigger (20)

Disparadores
DisparadoresDisparadores
Disparadores
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Formacion critica
Formacion criticaFormacion critica
Formacion critica
 
Tutorial disparadores
Tutorial disparadoresTutorial disparadores
Tutorial disparadores
 
TRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORESTRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORES
 
TRIGGER-ACTIVADORES
TRIGGER-ACTIVADORESTRIGGER-ACTIVADORES
TRIGGER-ACTIVADORES
 
database trig
database trigdatabase trig
database trig
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
 
Dbd triggers
Dbd triggersDbd triggers
Dbd triggers
 
Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollback
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
 
Trigger activadores
Trigger activadoresTrigger activadores
Trigger activadores
 
Portafolio 1 sql
Portafolio 1 sqlPortafolio 1 sql
Portafolio 1 sql
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Disparadores.pptx
Disparadores.pptxDisparadores.pptx
Disparadores.pptx
 
programacion por capas
programacion por capasprogramacion por capas
programacion por capas
 
Transac sq ll
Transac sq llTransac sq ll
Transac sq ll
 
Análisis y diseño ii sql php
Análisis y diseño ii sql phpAnálisis y diseño ii sql php
Análisis y diseño ii sql php
 
Pres17BDII.ppt
Pres17BDII.pptPres17BDII.ppt
Pres17BDII.ppt
 

Más de Juan Timoteo Cori

Más de Juan Timoteo Cori (20)

Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01
 
multas operadores
multas operadoresmultas operadores
multas operadores
 
Tupa2009 anexo1
Tupa2009 anexo1Tupa2009 anexo1
Tupa2009 anexo1
 
Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieria
 
Estándares tipo-valorativo
Estándares tipo-valorativoEstándares tipo-valorativo
Estándares tipo-valorativo
 
Convalidacion acreditacion
Convalidacion acreditacionConvalidacion acreditacion
Convalidacion acreditacion
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrial
 
essalud
essaludessalud
essalud
 
Nivel cump metas
Nivel cump metasNivel cump metas
Nivel cump metas
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomar
 
requerimientos
requerimientos requerimientos
requerimientos
 
Conflicto social
Conflicto socialConflicto social
Conflicto social
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016
 
aplicaciones moviles
aplicaciones  movilesaplicaciones  moviles
aplicaciones moviles
 
Variables internas
Variables internasVariables internas
Variables internas
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
 
Tesis web transaccionales-rof
Tesis web transaccionales-rofTesis web transaccionales-rof
Tesis web transaccionales-rof
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyares
 

Último (7)

PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdfTIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
TIPOS DE LA PSICOPATOLOGÍA DE LA PERCEPCIÓN.pdf
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
 

Trigger

  • 1. Connexions module: m18780 1 Disparadores en bases de datos relacionales∗ Miguel-Angel Sicilia This work is produced by The Connexions Project and licensed under the Creative Commons Attribution License † Abstract Se introduce el concepto de disparador (trigger) en bases de datos relacionales, y la sintaxis SQL para crearlos. 1 Disparadores en SQL En ocasiones es necesario mantener restricciones en la base de datos que no pueden expresarse directamente con las sentencias de creación de tablas como CREATE TABLE. Por ejemplo, en una aplicación bancaria, si un cliente se queda sin saldo para un pago en una cuenta (es decir, entra en números rojos), se deberá crear automáticamente un crédito personal para el descubierto. Si en la base de datos teníamos una tabla CUENTAS con la información de las cuentas bancarias (incluyendo un atributo saldo), entonces deberíamos observar la tabla, y cuando se ejecutase una sentencia UPDATE sobre la misma, habría que comprobar si se cumple la condición saldo0, en cuyo caso, habría que crear una tupla en la tabla PRESTAMOS. Esta idea de observar cambios es la que se implementa en el concepto de disparador (trigger). Los disparadores (triggers) son funciones denidas por el diseñador de la base de datos que se ejecutan cuando se producen ciertas operaciones en las bases de datos. Más concretamente, son programas a los que se les da un nombre de objeto en la base de datos, se asocia con una tabla determinada, y se activa cuando ocurre un cierto tipo de evento en esa tabla, como una inserción, actualización o borrado. Si un evento ocurre, el administrador de disparadores dentro del gestor de bases de datos llama a la función adecuada para procesar el evento, por lo que cuando ejecutamos un INSERT, DELETE o UPDATE, es posible que se desencadene la ejecución de disparadores, cosa que hay que tener muy en cuenta al desarrollar y evaluar aplicaciones. 1.1 Un primer ejemplo Pensemos en una aplicación bancaria en la que los CLIENTES tienen CUENTAS y PRESTAMOS. El siguiente diagrama muestra un esquema simplicado para esta base de datos. ∗Version 1.1: Dec 8, 2008 11:49 am US/Central †http://creativecommons.org/licenses/by/2.0/ http://cnx.org/content/m18780/1.1/
  • 2. Connexions module: m18780 2 Figure 1 Inicialmente, el banco tiene la política de no permitir que un cliente quede en números rojos. Podríamos pensar en crear un disparador para esa tarea. 1.2 Un primer ejemplo, mejor pensado 1.3 Sintaxis La sintaxis para la creación de disparadores en SQL es la siguiente: CREATE TRIGGER nombre momento evento ON nombre_tabla FOR EACH [ROW|SENTENCE] sentencia El nombre del disparador se usará si se desea eliminar el disparador, concretamente, se usa como argu- mento del comando DROP TRIGGER. El resto de la sintaxis se describe a continuación: • La palabra siguiente (momento) determina si la función debe ser llamada antes (BEFORE) o después (AFTER) del evento. • El siguiente elemento del comando determina qué eventos dispararán la ejecución (INSERT, DELETE, UPDATE). Es posible especicar múltiples eventos utilizado el operador OR. http://cnx.org/content/m18780/1.1/
  • 3. Connexions module: m18780 3 • El nombre de la relación (nombre_tabla) determinará la tabla afectada por el evento. La instrucción FOR EACH determina si el disparador se ejecutará para cada la afectada o bien antes (o después) de que la secuencia se haya completado. • La sentencia es la denición del código que se invocará. NOTA: En algunos gestores como MySQL 5.1 solo se soportan disparadores que se ejecutan por cada tupla afectada (FOR EACH ROW), pero otros permiten la sintaxis FOR EACH STATEMENT que se ejecutan por sentencia. Es importante consultar la documentación del gestor de bases de datos para saber exáctamente con qué sentencias se activan los disparadores. Por ejemplo, DROP TABLE en MySQL no utiliza DELETE, por lo que no ejecuta los disparadores asociados a DELETE. Sin embargo, Una característica importante de los disparadores es que no se puede tener más de uno para una deter- minada combinación de tabla, evento y momento. Es decir, no se pueden denir dos disparadores sobre la tabla T siendo ambos AFTER INSERT. Esto hace que si hay diferentes acciones a realizar para esa combinación, habrá que programar el disparador para que ejecute condicionalmente unas acciones u otras. 1.4 Ejecución encadenada Si una disparador ejecuta sentencias SQL, entonces estas funciones pueden disparar otros disparadores (o dispararse a sí mismas). A esto se le llama ejecución de disparadores en cascada. No hay ninguna limitación explicita en cuanto al número de niveles de cascada o encadenamiento. Si un disparador se ejecuta por un INSERT en una tabla T e inserta una nueva tupla en la misma tabla, se invocará de nuevo al mismo disparador (por el nuevo INSERT ejecutado en el código del disparador). 1.5 Funciones y procedimientos almacenados http://cnx.org/content/m18780/1.1/