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

Es posible utilizar un switch en un TRIGGER

Estas en el tema de Es posible utilizar un switch en un TRIGGER en el foro de Mysql en Foros del Web. hola amigos, es posible utilizar switch en el siguiente TRIGGER @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TRIGGER auditoria_factura BEFORE INSERT ON factura FOR EACH ...
  #1 (permalink)  
Antiguo 30/01/2016, 21:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Es posible utilizar un switch en un TRIGGER

hola amigos, es posible utilizar switch en el siguiente TRIGGER

Código SQL:
Ver original
  1. CREATE TRIGGER auditoria_factura
  2. BEFORE INSERT ON factura
  3. FOR EACH ROW
  4. BEGIN
  5.      IF NEW.numero < 0 THEN
  6.     INSERT INTO auditoria_factura SET numero = NEW.numero;
  7.      END IF;
  8. END;
  #2 (permalink)  
Antiguo 30/01/2016, 21: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, 5 meses
Puntos: 2658
Respuesta: Es posible utilizar un switch en un TRIGGER

No existe el SWITCH como controlador de flujo en MySQL.
Y tu TRIGGER tiene un error muy grave.

Explica qué es lo que quieres hacer.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/01/2016, 21:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Es posible utilizar un switch en un TRIGGER

gnzsoloyo gracias por responder,

te cuento la situación:

Una aplicacion creada en java se conecta a la base de datos e inserta datos cada 10 segundos, necesito normalizar una cadena de texto que se inserta, esta cadena es diferente deacuerdo a un tipo, entonces mi idea era crear un TRIGGER que al insertar desponga la cadena de acuerdo al tipo y inserte los valores en los campos de otra tabla.
  #4 (permalink)  
Antiguo 31/01/2016, 10:25
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, 5 meses
Puntos: 2658
Respuesta: Es posible utilizar un switch en un TRIGGER

Por un lado, si el dato puro, con su tipo y demás se obtienen en la aplicación, no tiene ningun sentido pasarle a la base de datos la responsabilidad de evaluar a donde debe insertarlo. Deberías resolver ese tema en la aplicación, o bien crear una interfaz mediadora que resuelva ese punto.
Usualmente este ultimo tipo de casos suelen ser servicios que corren para administrar colas de mensajes. La aplicación escribe en la cola de mensajes, y el servicio lee lo que quieras para depositarlo en las tablas de auditoria que se definan.

Por otro lado, recargar una tabla con un TRIGGER tiene costos de performance si es una tabla de impacto 24/7, NO es una buena idea dejar corriendo triggers que se ejecuten tanto...

Finalmente, el TRIGGER que propusiste tiene un error gravísimo: Intenta hacer un INSERT sobre la misma tabla donde el TRIGGER se ejecuta.. cuando se hace un INSERT.
Eso provocaría un loop infinito. ¿Lo pensaste?
MySQL no admite que un trigger genere acciones DML sobre la misma tabla que lo dispara.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 31/01/2016, 11:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Es posible utilizar un switch en un TRIGGER

gnzsoloyo gracias por tus aportes

Cita:
Usualmente este ultimo tipo de casos suelen ser servicios que corren para administrar colas de mensajes. La aplicación escribe en la cola de mensajes, y el servicio lee lo que quieras para depositarlo en las tablas de auditoria que se definan.
cuando te refieres a colas de mensajes en que lenguaje? o puedes explicarme un poco.
  #6 (permalink)  
Antiguo 31/01/2016, 11:46
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, 5 meses
Puntos: 2658
Respuesta: Es posible utilizar un switch en un TRIGGER

Se usan los recursos de administracion de colas de mensajes en los S.O.

Apache:
NET: Apache Log4net
Java: Apache log4j

En Windows está el recurso MS Queuing

¿Como crees que en las Herramientas Administrativas se registran los eventos de error en Windows, por ejemplo?

Se crean dos servicios: Uno que escribe en la cola de mensajes, y otro que lee la cola. Ambos son autonomos. El lector simplemente lee lo que la cola reciba.
Este es el esquema que hemos usado en la empresa que trabajo varias veces, en proyectos de cierta envergadura, uno de los cuales procesa más de 2300 mensajes por segundo de un sistema on-line comercial.
Este es un tema que excede el alcance de este subforo, por lo que te recomiendo postear la pregunta en el foro del Lenguaje usado
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: posible, switch, trigger
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:02.