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

Ayuda con trigger para insertar

Estas en el tema de Ayuda con trigger para insertar en el foro de Mysql en Foros del Web. Hola amigos, necesito ayuda con una duda sobre triggers, lo que quiero hacer es lo siguiente. Al insertar en la tutoria(id_tutoria, rut_tutor, fecha_tutoria,...) con este ...
  #1 (permalink)  
Antiguo 08/03/2011, 10:34
 
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 36
Antigüedad: 16 años
Puntos: 3
Ayuda con trigger para insertar

Hola amigos, necesito ayuda con una duda sobre triggers, lo que quiero hacer es lo siguiente.

Al insertar en la tutoria(id_tutoria, rut_tutor, fecha_tutoria,...) con este id que se genero se inserte en la tabla ambito_tutoria(id_tutoria, id_ambito,...), pero lo que sucede es que una tutoria puede tener mas de un id_ambito asociado y esto lo tengo en un formulario.
Por lo que entiendo los triggers se ejecutan cada vez que sucede algo en la bd, pero mi consulta es... es posible que yo le pase los id_ambito de mi formulario y me los escriba en la bd a través del trigger o debo utilizar otra forma?.
  #2 (permalink)  
Antiguo 08/03/2011, 12:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ayuda con trigger para insertar

Lo que tienes que tener en cuenta es que un TRIGGER sólo puede operar con los datos que van a ingresar en la tabla donde se define el TRIGGER. Sólo tiene esos datos como entrada, y no se pueden agregar otros datos que no pertenezcan a esa tabla.
Si los datos de esa segunda tabla contienen datos que no se puedan sacar del sistema (fecha, hora, user, base de datos, etc.), y tampoco pertenezcan a la primera tabla, no podrás hacer entonces el segundo INSERT en ese TRIGGER.
¿Se entiende la idea?
__________________
¿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 08/03/2011, 13:22
 
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 36
Antigüedad: 16 años
Puntos: 3
Respuesta: Ayuda con trigger para insertar

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo que tienes que tener en cuenta es que un TRIGGER sólo puede operar con los datos que van a ingresar en la tabla donde se define el TRIGGER. Sólo tiene esos datos como entrada, y no se pueden agregar otros datos que no pertenezcan a esa tabla.
Si los datos de esa segunda tabla contienen datos que no se puedan sacar del sistema (fecha, hora, user, base de datos, etc.), y tampoco pertenezcan a la primera tabla, no podrás hacer entonces el segundo INSERT en ese TRIGGER.
¿Se entiende la idea?
Exactamente eso es lo que al parecer debo hacer, ya que, si la primera tabla es afectada debo agregar en la segunda tabla pero no con todos los datos de la primera.

Lo que hago de momento es buscar el ultimo id_tutoria agregado y con los ambitos obtenidos del formulario inserto, pero según se, si hay varios usuarios agregando tutorias entonces puede que el ultimo id no sea realmente el que se inserto... que me recomiendas?
  #4 (permalink)  
Antiguo 08/03/2011, 15:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ayuda con trigger para insertar

1) Usar transacciones (ver tema Transactions). Eso es lo que se usa para resolver los problemas de concurrencia (Concurrencia ).
2) Si los datos a ingresar en ambas tablas son distintos, usa un stored procedure para resolver el problema de los dos INSERT. No te olvides que no puedes mandar los datos del segundo INSERT en el primer INSERT, a menos que los datos de la segunda tabla también estén en la primera tabla.
__________________
¿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: 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 05:29.