Trigger en mysql parte 1


Un trigger es una regla que nos permite definir una consulta que deberá de realizarse cuando se produzca un evento determinado dentro de la base de datos, estas reglas son de gran utilidad ya que nos ahorran muchas lineas de código al crear un sistema, ya que en el sistema solo debemos hacer que ocurra la acción inicial y el trigger ejecutara el resto de las acciones definidas.

La sintaxis de un trigger es:

  • create trigger nombre
  • after evento on tabla
  • referencing campo as variable
  • for each row
  • when condicion
  • acciones

veamos algunos ejemplos con esta base de datos:

Como podemos observar se trata de una tipica base de datos de ventas, con clientes, productos, una tabla que controla a que cliente corresponde cada venta y cuando se hace y la tabla de detalle que almacena que productos se vendieron en cada nota.

Ahora crearemos un trigger que nos ayude a disminuir la existencia de los productos al restar la cantidad del producto que se vendio, así que el evento que lo produce es la insercion de un nuevo registro en la tabla de detalle y la acción que generara sera la actualización de las existencias.

Ahora vamos con la explicación del código:

  • En la primera linea le indicamos que deseamos crear un trigger llamado “salenproductos”
  • En la segunda linea le indicamos que sea “after” después de que se ejecute el evento que en este caso es “insert” y con la sentencia “on” le indicamos en que tabla, que para el ejemplo es la tabla detalle
  • La tercera linea indica que este trigger se realizara para cada registro generado por el evento descrito.
  • La cuarta linea es una consulta de actualización en la que le indicamos que el campo existencia sera actualizado a su mismo valor menos new.cantidad, en donde la sentencia new hace referencia al nuevo valor del campo cantidad que se encuentra en la tabla de detalle, y solo se actualizarán aquellos cuyo cogido sea igual al nuevo código insertado en la tabla detalle (new.codigo)

Ahora para ponerlo a prueba veremos la tabla de productos con su existencia actual

insertaremos en la tabla de detalle una venta de 10 latas de atún, y veremos que es lo que ocurre

y si revisamos la tabla de productos

Como vemos, la actualización del inventario ocurrío de forma inmediata y sin necesidad de programarlo en el sistema, esto permite disminuir las lineas de código y al mismo tiempo disminuye la posibilidad de errores por fallas en la conexión o retardos en la red, ya que esta acción es llevada a cabo por el servidor de base de datos de forma automática y no por mandato del código del sistema.

En un próximo post describiremos mas a detalle las sentencias involucradas en los triggers

 

Anuncios

Acerca de sistemasumma

Blog dedicado a la tecnología y a todos los estudiantes de sistemas, informatica, computación y afines
Esta entrada fue publicada en base de datos y etiquetada , , , , . Guarda el enlace permanente.

6 respuestas a Trigger en mysql parte 1

  1. GIAMCARLOS dijo:

    MUCHISISISISIMAS GRAAACIAS, LO ESTUVE ANALIZANDO MUCHO Y PORFIN LOGRE ACOPLARLO A MI TRABAJO , QUE FELIZ ESTOY

    Me gusta

  2. Cruzito dijo:

    Gracias me sirvió, pero una duda, como haría el Trigger con DELETE, porque lo hago pero me marca error en el new.
    Espero me puedan ayudar. Saludos!

    Me gusta

  3. Anónimo dijo:

    muchas gracias, me sirvió mucho

    Me gusta

  4. Kenshiro dijo:

    Muy buen tutorial, me sirvio de mucho!!!

    Me gusta

¿Qué estas pensando?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s