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

Error al crear trigger

Estas en el tema de Error al crear trigger en el foro de Mysql en Foros del Web. buenas tardes, tengo las siguientes tablas EMPLEADO idempleado EMPLEADOCITA idempleadocita---- idempleado ---- idcita CITA idcita la tabla de relación es EMPLEADOCITA que tiene la llave ...
  #1 (permalink)  
Antiguo 06/12/2011, 11:31
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Error al crear trigger

buenas tardes, tengo las siguientes tablas

EMPLEADO
idempleado


EMPLEADOCITA
idempleadocita----idempleado----idcita


CITA
idcita

la tabla de relación es EMPLEADOCITA que tiene la llave primaria de CITA y EMPLEADO



Actualmente guardo registros en la tabla CITA de esta manera

insert into CITA values('idcita_autoincrement',otroscampos),('idcit a_autoincrement',otroscampos),('idcita_autoincreme nt',otroscampos);

Pero necesito guardar automáticamente en la tabla de relación (EMPLEADOCITA) el idcita (DE LA TABLA CITA) y el idempleado (DE LA TABLA EMPLEADO), despues de haber guardado cada registro de la consulta anterior.

Para hacer esto y teniendo en cuenta que la inserción en la tabla cita se hace de varios registros a la vez he querido usar los trigger pero me saca un error al intentar crearlo el codigo es el siguiente

DELIMITER //
create trigger CITA_AI AFTER INSERT ON CITA
FOR EACH ROW BEGIN
INSERT INTO EMPLEADOCITA (IDCITA,IDEMPLEADO) VALUES
(NEW.IDCITA, '1')
END; //


otra duda es como obtengo el código del empleado, y pasarlo por parametro a este trigger se puede hacer esto ?

mil gracias de antemano.
  #2 (permalink)  
Antiguo 06/12/2011, 12:05
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: Error al crear trigger

En realidad... No se puede hacer lo que quieres.
Por un lado porque los trigger no reciben ni devuelve parámetros. Los únicos datos que tienen son de entrada y únicamente pueden ser datos asignados a columnas de la propia tabla.
Por otro lado, a cita no tiene como dato el id del empleado. Por ello no puedes enviarlo en el insert y sin eso, no hay modo de crear la inserción a la tabla relacional empelado_cita.
Este tipo de cosas raramente se puede resolver en TRIGGERS, en todo caso te aconsejaría que lo hagas con un stored procedure.
__________________
¿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 06/12/2011, 20:42
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Error al crear trigger

gracias, y si creo un campo llamado IDEMPLEADO en la tabla CITA y el evento after insert de CITA, guardo el IDEMPLEADO Y IDCITA en la tabla empleado_cita.


En todo caso como seria con un procedimiento almacenado ?
  #4 (permalink)  
Antiguo 07/12/2011, 17:17
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: Error al crear trigger

Cita:
gracias, y si creo un campo llamado IDEMPLEADO en la tabla CITA y el evento after insert de CITA, guardo el IDEMPLEADO Y IDCITA en la tabla empleado_cita.
Las tablas no se crean o modifican porque sí. Deben crearse en base a lo que el sistema contiene y requiere, pero no puedes andar agregando FK por todas partes para parchar algo que de base se hace de otro modo.
Antes de avazar más, primero aclaranos qué es lo que estás definiendo cuando creas esas tablas. Es decir: Qué es una cita, y por qué tiene una relación N:N con Empleado, porque técnicamente, una cita es una entrevista, encuentro o consulta, y como entidad cada instancia normalmente tiene una relación 1:N con empleados, no N:N.
¿Qué hace que se requiera una relación N:N?
Luego veremos los que se debe 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)

Etiquetas: campos, registros, tabla, 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 20:01.