Disparadores

Páginas: 16 (3870 palabras) Publicado: 3 de octubre de 2011
. Utilización de disparadores
El soporte para disparadores se incluyó a partir de MySQL 5.0.2. Actualmente, el soporte para disparadores es básico, por lo tanto hay ciertas limitaciones en lo que puede hacerse con ellos. Esta sección trata sobre el uso de los disparadores y las limitaciones vigentes.
Un disparador es un objeto de base de datos con nombre que se asocia a una tabla, y se activacuando ocurre un evento en particular para la tabla. Algunos usos para los disparadores es verificar valores a ser insertados o llevar a cabo cálculos sobre valores involucrados en una actualización.
Un disparador se asocia con una tabla y se define para que se active al ocurrir una sentencia INSERT,DELETE, o UPDATE sobre dicha tabla. Puede también establecerse que se active antes o despues de lasentencia en cuestión. Por ejemplo, se puede tener un disparador que se active antes de que un registro sea borrado, o después de que sea actualizado.
Para crear o eliminar un disparador, se emplean las sentencias CREATE TRIGGER y DROP TRIGGER. La sintaxis de las mismas se describe en Sección 20.1, “Sintaxis de CREATE TRIGGER” y Sección 20.2, “Sintaxis de DROP TRIGGER”.
Este es un ejemplosencillo que asocia un disparador con una tabla para cuando reciba sentenciasINSERT. Actúa como un acumulador que suma los valores insertados en una de las columnas de la tabla.
La siguiente sentencia crea la tabla y un disparador asociado a ella:
mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
-> FOR EACH ROW SET @sum = @sum +NEW.amount;
La sentencia CREATE TRIGGER crea un disparador llamado ins_sum que se asocia con la tablaaccount. También se incluyen cláusulas que especifican el momento de activación, el evento activador, y qué hacer luego de la activación:
• La palabra clave BEFORE indica el momento de acción del disparador. En este caso, el disparador debería activarse antes de que cada registro se inserte enla tabla. La otra palabra clave posible aqui es AFTER.
• La plabra clave INSERT indica el evento que activará al disparador. En el ejemplo, la sentencia INSERTcausará la activación. También pueden crearse disparadores para sentencias DELETE y UPDATE.
• Las sentencia siguiente, FOR EACH ROW, define lo que se ejecutará cada vez que el disparador se active, lo cual ocurre una vez por cada filaafectada por la sentencia activadora. En el ejemplo, la sentencia activada es un sencillo SET que acumula los valores insertados en la columna amount. La sentencia se refiere a la columna como NEW.amount, lo que significa “el valor de la columna amountque será insertado en el nuevo registro.”
Para utilizar el disparador, se debe establecer el valor de la variable acumulador a cero, ejecutar unasentencia INSERT, y ver qué valor presenta luego la variable.
mysql> SET @sum = 0;
mysql> INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00);
mysql> SELECT @sum AS 'Total amount inserted';
+-----------------------+
| Total amount inserted |
+-----------------------+
| 1852.48 |
+-----------------------+
En este caso, el valor de @sum luego de haber ejecutado lasentencia INSERT es 14.98 + 1937.50 - 100, o 1852.48.
Para eliminar el disparador, se emplea una sentencia DROP TRIGGER. El nombre del disparador debe incluir el nombre de la tabla:
mysql> DROP TRIGGER account.ins_sum;
Debido a que un disparador está asociado con una tabla en particular, no se pueden tener múltiples disparadores con el mismo nombre dentro de una tabla. También se debería tener encuenta que el espacio de nombres de los disparadores puede cambiar en el futuro de un nivel de tabla a un nivel de base de datos, es decir, los nombres de disparadores ya no sólo deberían ser únicos para cada tabla sino para toda la base de datos. Para una mejor compatibilidad con desarrollos futuros, se debe intentar emplear nombres de disparadores que no se repitan dentro de la base de datos....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Disparos
  • disparo
  • Disparadores
  • disparadores
  • Diagrama de disparo
  • Disparo Mosfets
  • Disparidades Regionales
  • Disparidades Regionales

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS