Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Es lo mismo un trigger que un "procedimiento almacenado"?

Estas en el tema de ¿Es lo mismo un trigger que un "procedimiento almacenado"? en el foro de Mysql en Foros del Web. Hola a todos, Estaba desarrollando mi aplicacion con transacciones, pero me han recomendado en el foro intentar usar triggers o "procedimientos almacenados" en lugar de ...
  #1 (permalink)  
Antiguo 17/12/2007, 06:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
¿Es lo mismo un trigger que un "procedimiento almacenado"?

Hola a todos,

Estaba desarrollando mi aplicacion con transacciones, pero me han recomendado en el foro intentar usar triggers o "procedimientos almacenados" en lugar de transacciones (y la verdad, después de lo que me han comentado en el foro, yo mismo creo, que, efectivamente, es mejor solución)

Pero...

¿Es lo mismo un trigger que un "procedimiento almacenado"?

y por otra parte...

¿Existe alguna desventaja de usar "triggers" o "procedimientos almacenados" que tenga que tener en cuenta?

Muchas gracias a todos.
  #2 (permalink)  
Antiguo 17/12/2007, 06:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Re: ¿Es lo mismo un trigger que un "procedimiento almacenado"?

No son lo mismo.

Un procedimiento almacenado es una rutina programada en SQL y que realiza cierta tarea o conjunto de tareas con una o más tablas para realizar una secuencia repetitiva de acciones. Se consmtruye para realizar esa tarea evitando reaslizar una inmensa cantidad de acciones repetidas veces. En lugar de ello se invoca al SP, se le indican los parámetros de inicio y los de salida, si los tiene, y listo.
Es una forma eficiente de tratar ciclos repetitivos de operaciones, barridos de tablas registro a registro, cálculos y búsquedas de cierta complejidad sin tener que recordar la escriitura de una sentencia.

El trigger es una rutina almacenada vinculada a una sola tabla y que se ejecuta únicamente y en todos los casos en que se de un evento determinado en esa tabla. Los eventos básicos son INSERT, UPDATE y DELETE.. Se usa principalmente para realizar tareas que afectan a esa tabla en cada ocurrencia de ese evento. Por ejemplo: Si uno quiere hacer ante una inserción que ingrese en un campo un A valor si y sólo si el campo B vale 0, puede hacerlo vía aplicación o generar un trigger del tipo:
CREATE TRIGGER TRG_01 ON TABLA1 BEFORE INSERT FOR EACH ROW
BEGIN
IF NEW.B=0 THEN SET NEW.A = (SELECT IDCAMPO FROM TABLA2 WHERE ID = NEW.B);
END


Una diferencia entre ambos es que los procedimientos pueden o no tener parámetros de entrada, entrada-salida o salida, mientras que los únicos parámetros de un trigger son los campos del registro entrante y son de entrada.
Si bien el trigger puede invocar a otras tablas para realizar su trabajo, el trigger está siempre vinculado a una sola, y solamente a una.
Otra diferencia es que un SP se crea para ser invocado en ciertas circunstancias. Un trigger se "dispara" (de allí su nombre" SIEMPRE que se de la circunstancia programada.

Última edición por gnzsoloyo; 17/12/2007 a las 06:42
  #3 (permalink)  
Antiguo 17/12/2007, 07:06
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: ¿Es lo mismo un trigger que un "procedimiento almacenado"?

He entendido la diferencia perfectamente!!

Muchas gracias.

(espero dentro de poco tiempo poder yo también contribuir a solucionar las dudas de los demás.)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 01:11.