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

Insertar 2 campos en 4 tablas

Estas en el tema de Insertar 2 campos en 4 tablas en el foro de Mysql en Foros del Web. Hola a todos; Me gustaria saber si se puede insertar 2 campos desde un formulario en 4 tablas de una misma BD. Soy un poco ...
  #1 (permalink)  
Antiguo 17/01/2009, 18:24
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Insertar 2 campos en 4 tablas

Hola a todos;
Me gustaria saber si se puede insertar 2 campos desde un formulario en 4 tablas de una misma BD. Soy un poco novato en esto, asi que si podeis me gustaria me pegaseis el codigo fuente explicado y asi entender y aprender un poco mas.

Un saludo
  #2 (permalink)  
Antiguo 17/01/2009, 22:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Insertar 2 campos en 4 tablas

Mmm si es con una sola sentencia lo puedes hacer con un Stored Procedure, si no no veo el impedimento de que envies 4 sentencias SQL.

Saludos
  #3 (permalink)  
Antiguo 19/01/2009, 12:41
 
Fecha de Ingreso: diciembre-2008
Mensajes: 39
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Insertar 2 campos en 4 tablas

Existen dos posibilidades.
usar stored procedures
usar transacciones: http://www.webtaller.com/construccion/lenguajes/mysql/lecciones/transacciones-mysql-2.php (exclusivamente con el engine InnoDB)

Cita:
BEGIN;
INSERT INTO TABLA1 (campo1, campo2) VALUES('valor1', 'valor2');
INSERT INTO TABLA2 (campo1, campo2) VALUES('valor1', 'valor2');
INSERT INTO TABLA3 (campo1, campo2) VALUES('valor1', 'valor2');
INSERT INTO TABLA4 (campo1, campo2) VALUES('valor1', 'valor2');
COMMIT;
esto garantiza la atomicidad de la operacion.
si se insertó en tabla1, se insertó en tabla4.
en su defecto, se produce un "Rollback", que deshace todo tipo de cambio desde el BEGIN.

El ejemplo mas común es de transaciones de banco
donde ocurriria algo como:
Cita:
BEGIN;
UPDATE clientes set saldo = saldo - 100 where id = 'idcliente';
UPDATE clientes set saldo = saldo + 100 where id = 'idclientereceptor';
COMMIT;
esto garantiza, que si se sacó dinero de una cuenta, se depositó en la otra.
en su defecto, el servidor devuelve un error, y garantiza que no se haya sacado de la primera.
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 21:59.