MySQL - problemas con trigger after insert

   
Vista:

problemas con trigger after insert

Publicado por JOSE DAGNOVER FRANCO dagnover@gmail.com (5 intervenciones) el 10/11/2011 19:14:59
Hola a todos, soy nuevo en mysql y este es mi problema:

tengo una tabla 'personas' la cual tiene 4 campos para almacenar el nombre de una persona (p_nombre, s_nombre, p_apellido, s_apellido) estos campos son llenados por el usuario y tengo un campo extra 'nom_completo' (necesario por cuestiones de desarrollo de interface) lo que deseo es que al insertar o actualizar registro el sistema concatene lo que hay en los 4 campos y lo almacene el en campo 'nom_completo'

CREATE TRIGGER personas_AI_nombre_completo AFTER INSERT
ON personas
FOR EACH ROW
new.nom_completo = CONCAT_WS(' ',new.p_nombre,new.s_nombre,new.p_apellido,new.s_apellido)


pero no me permite crear el trigger, muchas gracias por toda su ayuda, la verdad como les decia soy nuevo con mysql .

pta: este es el error que me arroja


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.nom_completo = CONCAT_WS(' ',new.p_nombre,new.s_nombre,new.p_apellido,new.s_ape' at line 4
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problemas con trigger after insert

Publicado por xve (2 intervenciones) el 10/11/2011 19:46:38
Hola Jose, si no recuerdo mal, new.campo hace referencia al nuevo valor añadido en el insert o update, y old.campo al valor anterior del insert o update, por eso creo que el problema lo tienes en new.nom_completo, ya que este valor no lo recibe el trigger...

Puedes probar así:
1
2
3
4
CREATE TRIGGER personas_AI_nombre_completo AFTER INSERT
 ON personas
 FOR EACH ROW
nom_completo = CONCAT_WS(' ',new.p_nombre,new.s_nombre,new.p_apellido,new.s_apellido)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por Jose Dagnover Franco (5 intervenciones) el 10/11/2011 20:59:12
infortunadamente me sigue apareciendo el mismo error


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= CONCAT_WS(' ',new.p_nombre,new.s_nombre,new.p_apellido,new.s_apellido)' at line 4

CREATE TRIGGER personas_AI_nombre_completo AFTER INSERT ON personas
FOR EACH
ROW nom_completo = CONCAT_WS( ' ', new.p_nombre, new.s_nombre, new.p_apellido, new.s_apellido )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por xve (2 intervenciones) el 10/11/2011 21:19:32
Hola Jose, vamos a hacer una prueba, ya que he leído que hay o había algún bug en la utilización de CONCAT_WS en un stored, y no vaya a ser que este dando problemas. Puedes probarlo así:

1
2
3
CREATE TRIGGER personas_AI_nombre_completo AFTER INSERT ON personas
 FOR EACH ROW
nom_completo = CONCAT(new.p_nombre, ' ', new.s_nombre, ' ', new.p_apellido, ' ', new.s_apellido )

Coméntanos por favor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por Jose Dagnover Franco (5 intervenciones) el 10/11/2011 23:11:18
sale el siguiente error

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= CONCAT(new.p_nombre, ' ', new.s_nombre, ' ', new.p_apellido, ' ', new.s_apelli' at line 3

CREATE TRIGGER personas_AI_nombre_completo AFTER INSERT ON personas
FOR EACH
ROW nom_completo = CONCAT( new.p_nombre, ' ', new.s_nombre, ' ', new.p_apellido, ' ', new.s_apellido )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por Bethoven (1 intervención) el 10/11/2011 22:48:23
Hola amigo:

Tal ves este enlace te pueda ayudar sobre triggers.

http://visualbasic2010777.blogspot.com/2011/11/triggers-como-hacer-un-trigger-que.html

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por Gonzalo GC (339 intervenciones) el 13/11/2011 01:13:32
El problema es que en realidad no estás indicándole nada...
Poner
1
new.nom_completo = CONCAT_WS(' ',new.p_nombre, new.s_nombre, new.p_apellido, new.s_apellido)

en realidad no le dice nada a MySQL. No es ninguna operación.
Si lo que quieres hacer es asignar un valor dado a new.nom_completo, no es así como se hace. Las asignaciones se hacen con SET, lo mismo que en el UPDATE:
Pone:
1
new.nom_completo = CONCAT_WS(' ',new.p_nombre, new.s_nombre, new.p_apellido, new.s_apellido)


Por otro lado, tampoco tiene sentido que hagas un trigger para eso, porque bien lo podrías hacer al mismo tiempo que haces el INSERT. Y aún así tampoco tiene ningún sentido hacerlo, porque si ya tienes todos los valores en la tabla, bien puedes realizar esa operación cuando haces los selects, o bien implementarla en una vista.
Finalmente, hacer ese tipo de almacenajes tiene dos problemas: 1) Duplicas la información de la tabla, y 2) Te arriesgas a tener información inconsistente, ya que la modificación de cualquiera de esos otros campos, por correcciones, requeriría la corrección del campo en cuestión cada vez.... Tarea que sería innecesaria si en lugar de hacer esta pavada, lo resolvieses en las consultas SELECT o en una vista...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por Gonzalo GC (339 intervenciones) el 13/11/2011 01:14:30
Perdón, me olvidé de ponerlo bien:
1
SET new.nom_completo = CONCAT_WS(' ',new.p_nombre, new.s_nombre, new.p_apellido, new.s_apellido)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con trigger after insert

Publicado por Jose Dagnover Franco (5 intervenciones) el 15/11/2011 00:10:21
Muchisimas gracias por tus comentarios, la verdad es que la interface de desarrollo me a causado grandes problemas (codecharge) y se me a dificultado enormemente el poder relaizar las acciones que tu me recomiendas. la creacion de la vista me parece factible, pero teniendo en cuenta que la BD la manejan varias empresas con sus tantos clientes me preocupa la velocidad de la aplicacion. aun asi tu consejo es el masa valido y sertero, muchas gracias por tu respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar