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

Problemas con un trigger

Estas en el tema de Problemas con un trigger en el foro de Mysql en Foros del Web. Estoy usando joomla y enlazando aplicaciones propias y me hace falta poder pasar los datos de los usuarios que se crean a la base de ...
  #1 (permalink)  
Antiguo 08/05/2013, 05:54
Avatar de Lyanna  
Fecha de Ingreso: noviembre-2012
Mensajes: 8
Antigüedad: 11 años, 5 meses
Puntos: 1
Problemas con un trigger

Estoy usando joomla y enlazando aplicaciones propias y me hace falta poder pasar los datos de los usuarios que se crean a la base de datos que uso para las aplicaciones, estoy intentándolo con un trigger pero me da error al indicar la 2º base de datos.

No tengo mucha experiencia con los triggers pero he buscado por internet y en todos sitios dice que se puede, pero aun asi no me sale ...

Dejo el codigo del trigger, espero que me puedan echar una manita porque llevo horas con esto y no me sale nah T_T.

Código MySQL:
Ver original
  1. create trigger lgt_autoupdate
  2.  
  3. after insert on joomla.chsgb_users
  4.     If (SELECT `group_id` FROM `chsgb_user_usergroup_map` WHERE `user_id` = new.id) LIKE '14'
  5.       Begin
  6.  
  7.         INSERT INTO appedir.cliente(`nombre`, `apellidos`, `nif`, `calle`, `telefono`, `fecha_nacimiento`, `email`, `numero_cuenta`, `movil`, `numero`, `cp`, `ciudad`, `provincia`, `idJoomla`)
  8.         VALUES (new.name, "", "", "", "", "", new.email, "", "", "", "", "", "", new.id)
  9.     End


Gracias ^^.

Última edición por gnzsoloyo; 08/05/2013 a las 05:58 Razón: SQL mal etiquetado
  #2 (permalink)  
Antiguo 08/05/2013, 06:04
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problemas con un trigger

me da error al indicar la 2º base de datos. qué error te da?
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 08/05/2013, 06:06
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
Respuesta: Problemas con un trigger

Cita:
No tengo mucha experiencia con los triggers pero he buscado por internet y en todos sitios dice que se puede, pero aun asi no me sale ...
En primer lugar, debes tener en cuenta que no existe un PL/SQL o T-SQL estandar, por lo que cada uno de los DBMS puede hacer las cosas en diferente forma. Es decir, puede ser que ciertas cosas se puedan hacer en MySQL y no en Oracle, o viceversa.

Por otra parte nos dices que te da problemas con la base destino, pero no nos dices exactamente qué problema es. Es decir, no nos estás diciendo cuál es el mensaje de MySQL, por lo que sólo podemos adivinar y suponer:
1) No existe la base.
2) Tiene otro nombre.
3) El user no tiene permisos.
4) Está en otro servidor.
5) Estás violando alguna restricción sin saberlo (¿cuál? ¿Y cómo podemos saberlo sin conocer las restricciones de tu base?).

En otras palabras: No tenemos información suficiente para responder más que en teoría y con suposiciones.

Danos más datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 08/05/2013, 09:01
Avatar de Lyanna  
Fecha de Ingreso: noviembre-2012
Mensajes: 8
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Problemas con un trigger

Perdón por la falta de información >.< no suelo postear jeje

El fallo que me da es: #1046 - No database selected

Las 2 bases de datos están creadas y en el mismo servidor.

Gracias
  #5 (permalink)  
Antiguo 08/05/2013, 09:14
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
Respuesta: Problemas con un trigger

Ese mensaje suele únicamente darlo cuando creas el trigger, no cuando el trigger se ejecuta.
¿Está ya creado o lo estás intentando cargar?
Si estás tratando de crearlo, es simplemente que no has seleccionado la base donde quedará, al momento de hacerlo, y tampoco está indicada en el cuerpo del TRIGGER.
Ten en cuenta que un TRIGGER se define sobre una única tabla en una única base de datos. Y tu cREATE no dice donde está.

¿Qué estás usando para crearlo? ¿Consola o una aplicación?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 09/05/2013, 04:45
Avatar de Lyanna  
Fecha de Ingreso: noviembre-2012
Mensajes: 8
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Problemas con un trigger

Lo intento crear desde el phpmyadmin, pero necesito que pase los datos de una bd a la otra no se puede hacer??
  #7 (permalink)  
Antiguo 09/05/2013, 05:43
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
Respuesta: Problemas con un trigger

Por lo visto ni entendiste el ultimo post.


Primero:
Cita:
Ese mensaje suele únicamente darlo cuando creas el trigger, no cuando el trigger se ejecuta.
Es decir, sólo se da cuando estás CREANDO el trigger. En ningún momento he hablado del código del trigger en sí, ni de lo que puede hacer o lo que no.

Segundo:
Cita:
Si estás tratando de crearlo, es simplemente que no has seleccionado la base donde quedará, al momento de hacerlo, y tampoco está indicada en el cuerpo del TRIGGER.
Y por "cuerpo del trigger" me refiero a la parte donde dice "CREATE TRIGGER", no a las sentencias que están en él.


¿Queda claro?

La idea es simple: Estás abriendo el phpMyadmin, yendo a la ventana de ejecución de SQL e intentando ejecutar el script...
Lo que tal vez no entiendas es que cuando abres el phpMyadmin, estás solamente accediendo al servicio, pero no estás trabajando con ninguna base específica. Y como no hay ninguna declarada como "en uso", MySQL no sabe dónde crear los objetos (tablas, rutinas, etc), que le pides.
Lo que te has olvidado es, luego de abrir el phpMyadmin es seleccionar la base en la que vas a trabajar.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/05/2013, 12:19
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: Problemas con un trigger

Hola buenas Lyanna.

Realizando un analisis de la sintaxis que muestra la creacion del trigger, puedo determinar que fectivamente el error que muestra es totalmente correcto, pero que el error no esta especificamente en la creacion del trigger debido a que en la definicion del trigger mencionas que tu base de datos es joomla; sino que esta justamente en el cuerpo del trigger, porque hay una consulta que tu realizas, que no tiene especificada su base de datos.

La verdad es que no tan solo es ese el error en sintaxis, sino que tambien el error pasa porque no cerraste la condicion del if, que deberia haberse terminado con un END IF. Te dejo mas abajo como deberia estar escrita tu consulta,indicando en corchete donde deberia estar el nombre de tu base de datos que quieres realizar la consulta.

Código MySQL:
Ver original
  1. CREATE trigger lgt_autoupdate
  2.  
  3. after INSERT on joomla.chsgb_users
  4.     If (SELECT `group_id` FROM [AQUI DEBERIA IR TU BASE DE DATOS].`chsgb_user_usergroup_map` WHERE `user_id` = new.id) LIKE '14'
  5.       BEGIN
  6.  
  7.         INSERT INTO appedir.cliente(`nombre`, `apellidos`, `nif`, `calle`, `telefono`, `fecha_nacimiento`, `email`, `numero_cuenta`, `movil`, `numero`, `cp`, `ciudad`, `provincia`, `idJoomla`)
  8.         VALUES (new.name, "", "", "", "", "", new.email, "", "", "", "", "", "", new.id)
  9.     END IF;

Tambien puedes comprobar si esta bien lo que haces, realizando la siguiente prueba desde phpMyAdmin. Cuando ingreses a phpMyAdmin, realiza lo sigueinte si es que fuera posible:

1.- Al momento de ingresar a phpMyAdmin, no selecciones ninguna base de datos para ver sus tablas.
2.- Te deberia aparecer una opcion de SQL, en la cual puedes ingresar codigo para realizar acciones. es en este caso en donde debes pegar solo la consulta del SELECT (la que esta en el if), y desde ahi ejecutar y comprobar que te devuelva los datos solicitados; sino es asi, es porque ahi esta el error. Y asi puedes hacerlo con todas las query que tengas en el trigger, una vez que compruebas que todas te funcionan, podes comprobar que el trigger este ok.

Cuentanos como te fue. Saludos.

Etiquetas: insert, select, 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 07:59.