Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/01/2013, 04:31
ilem
 
Fecha de Ingreso: abril-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Guardar en Dos Tablas Con Una Sola Sentencia SQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En realidad tu pregunta es muy habitual. En el último mes y medio han preguntado lo mismo al menos cuatro o cinco veces, y en todos los casos la respuesta es la misma: Si tienes dos tablas para cargar, debes hacer dos sentencias INSERT de SQL, una para cada tabla. No hay otra.

Entendamos esto:
1) Lo que hagas en el formulario es irrelevante para la base de datos. Que tengas un sólo formulario no implica que la carga de datos sea en una sola sentencia, ni en una sola tabla (estoy en un proyecto en que un "Submit" de la vista del formulario desencadena 57 INSERTs diferentes en 34 procedimientos, y no exagero).
2) Si tienes dos tablas para cagar datos, tienes dos INSERTs distintos, porque no existe JOIN en el INSERT.
3) Si quieres hacer un sólo envío a la base, usa un procedimiento almacenado en la base que se ocupen de ambos INSERT.
4) Si el segundo depende del éxito del primero, usa TRANSACTIONs o stored procedures. En algunos casos pueden usarse TRIGGERs. Cualquiera de las opciones puede servirte.

Para poder ejemplificarlo con tu propio caso, deberías postear la estructura de las tablas, y decir qué condición de éxito de la primera consulta determina que se haga o no la segunda o se elimine todo.

HOla Gnzsoloyo, a mi me pasa algo parecido al del compañero, pero no llego a entender lo de usar un procedimiento almacenado en la base para que se ocupen de ambos insert.
Soy nuevo en esto, y me he 'atascado' aquí.
Mi pregunta: te refieres a que defina dos variables ($sql y $sql2 con sus instrucciones insert .....) y que haga una tercera variable $resultado(por ejemplo), para que esta sea la que realice el trabajo?
Si es así como sería la sintaxis de dicha instrucción?

Gracias a todos los que haceis esto un poco mas facil.