Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/12/2009, 10:56
Avatar de aniMAYtions
aniMAYtions
 
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Quiero crear un trigger que me formatte una cadena de caracteres antes de

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Sería bueno que nos aclararas un poco acerca de las "diversas razones", porque en realidad el problema es muchísimo más sencillo de resolver desde la aplicación que con un trigger
Gracias por tu respuesta gnzsoloyo. Te aclaro en un momento las "diversas razones".
La aplicación en la que trabajao la estoy creando bajo el CMS Joomla. Y este formulario corresponde a uno de los componentes que trae el gestor. En el apartado correspondiente de este foro ia he preguntado cómo puedo hacerlo con código php, pues el componente se subdivide en miles de apartados con clases y funciones que no me están facilitando encontrar la solución fácil al problema, pero al parecer nadie tiene una respuesta.
Necesito terminar ésto lo más pronto posible, pues es una pequeña parte de un todo que no estará completo hasta que consiga solucionarlo.
Entonces, después de darle muchas vueltas a la cabeza he pensado que otra forma de hacerlo sería con un trigger que me formatease la cadena antes de ser insertada y así poder ser reconocida como date por mysql.
Otra opción sería poner el campo directamente como char, pero tú mismo me enseñaste en otro post que eso es una cutrada, y más aún si luego tengo que calcular la edad del usuario.

Te vuelvo a agradecer tu respuesta y voy a probar enseguida el código que me has posteado. Pero aunque funcionase no te preocupes, si me responden al otro post para hacerlo con código php eliminaré el trigger y lo haré de la otra forma.

Un saludo!!

Ah, por cierto, en el error que me muestra phpMyAdmin sólo dice
Error
consulta SQL:
mi consulta...
MySQL ha dicho:
#1064 -

Ya lo he probado y resulta que no... verás, este es el error que me da.

Y esta la consulta completa
Código:
 CREATE TRIGGER tr_formato_fecha  BEFORE INSERT ON emp_users FOR EACH ROW
      BEGIN
          DECLARE anio char(4);
          DECLARE mes, dia char(2);
          SET anio = MID(NEW.fecha_nacimiento, 7, 4);
          SET mes = MID(NEW.fecha_nacimiento, 4, 2);
          SET dia = MID(NEW.fecha_nacimiento, 1, 2);
          SET NEW.fecha_nacimiento = CONCAT(anio, '-', mes, '-', dia);
      END;
Está copiada y pegada. :(

Última edición por aniMAYtions; 08/12/2009 a las 11:09 Razón: ya lo probé