Disparadores SQL (Trigger)

Páginas: 6 (1427 palabras) Publicado: 28 de septiembre de 2014
Tema 5: Disparadores (Trigger)
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 seactiva cuando 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 odespués de la sentencia 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.
Este es un ejemplo sencillo que asocia un disparador con una tabla para
cuando reciba sentencias INSERT. Actúa como un acumulador que sumalos
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 en la tabla. La otra palabra clave posible aquí es AFTER.
La palabra clave INSERT indica elevento que activará al disparador. En
el ejemplo, la sentencia INSERT causará la activación. También pueden
crearse disparadores para sentencias DELETE y UPDATE.
La sentencia siguiente, FOR EACH ROW, define lo que se ejecutará cada
vez que el disparador se active, lo cual ocurre una vez por cada fila
afectada por la sentencia activadora. En el ejemplo, la sentencia
activada es un sencillo SETque 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 amount que será
insertado en el nuevo registro.”

Para utilizar el disparador, se debe establecer el valor de la variable
acumulador a cero, ejecutar una sentencia 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 la sentencia INSERT
es 14.98 + 1937.50 - 100, o 1852.48.
Para eliminar el disparador, se empleauna 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 en cuenta que el espacio de nombres de los
disparadores puede cambiar en el futuro de unnivel 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.
Adicionalmente al requisito de nombres únicos de disparador en cada tabla,
hay...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Disparadores sql
  • Sql server ejemplo de un desencadenador (trigger)
  • Trigger SQL
  • disparador para my sql
  • Trigger
  • trigger
  • Trigger
  • Que es un trigger?

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS