Comunidad de diseño web y desarrollo en internet online

Consulta SQL, Insertar datos a mas de una tabla a la vez.-

Citar            
MensajeEscrito el 17 May 2008 06:56 pm
Tengo que insertar datos a mas de una tabla, por ello creo que deberia crear mas de un insert, pero mi problema es que si en algun momento se crea un error en algun ingreso como manipular el error, como por ejemplo anular todo lo ingresado.-

Muchas gracias....

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 18 May 2008 07:01 pm
Puedes iniciar una transacción y al final hacer un commit (en caso de fallo vuelve todo atrás). Creo que MySQL lo soporta en las últimas versiones, otras BD como Postgres lo tienen incorporado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 May 2008 05:01 am
Si vienes de perl lo haras ? : que le gusta lo ilegible... Bueno de hecho ya la sintaxis lo es.

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 19 May 2008 03:37 pm

Maikel escribió:

Si vienes de perl lo haras ? : que le gusta lo ilegible... Bueno de hecho ya la sintaxis lo es.

:? no comprendo tu comentario :?

por otro lado si debes hacerlo con una transaccion y mysql ya lo trae desde la ver 5.0

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 19 May 2008 11:02 pm
Disculpen pero no entendi.- :S

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 19 May 2008 11:42 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2008 12:01 am

jpcw escribió:

Maikel escribió:

Si vienes de perl lo haras ? : que le gusta lo ilegible... Bueno de hecho ya la sintaxis lo es.

:? no comprendo tu comentario :?

por otro lado si debes hacerlo con una transaccion y mysql ya lo trae desde la ver 5.0


Que los programadores avezados de Perl le encanta hacer un código ilegible y por eso usarian el condicional ? :, pues ya la sintaxis del lenguaje es horrible.

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 May 2008 02:22 am

Maikel escribió:

jpcw escribió:

Maikel escribió:

Si vienes de perl lo haras ? : que le gusta lo ilegible... Bueno de hecho ya la sintaxis lo es.

:? no comprendo tu comentario :?

por otro lado si debes hacerlo con una transaccion y mysql ya lo trae desde la ver 5.0


Que los programadores avezados de Perl le encanta hacer un código ilegible y por eso usarian el condicional ? :, pues ya la sintaxis del lenguaje es horrible.


Eh Maik, creo que tu pretendias responder en otro tema.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 20 May 2008 03:29 pm

Dano escribió:

Maikel escribió:

jpcw escribió:

Maikel escribió:

Si vienes de perl lo haras ? : que le gusta lo ilegible... Bueno de hecho ya la sintaxis lo es.

:? no comprendo tu comentario :?

por otro lado si debes hacerlo con una transaccion y mysql ya lo trae desde la ver 5.0


Que los programadores avezados de Perl le encanta hacer un código ilegible y por eso usarian el condicional ? :, pues ya la sintaxis del lenguaje es horrible.


Eh Maik, creo que tu pretendias responder en otro tema.


Oh por dios!... Necesitan vacaciones, en serio.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 20 May 2008 04:05 pm
Ya aprendi sobre las transacciones, pero al parecer no la puedo aplicar, ya que yo rescato datos de una consulta para guardalas en la siguiente.

Código :

START TRANSACTION;
/* Sentencias */
COMMIT;


Pare ello utilizo \"mysql_isert_id ($link)\", y por lo que lei se procesan todas las consultas de una sola vez.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 20 May 2008 06:22 pm
Hay una expresión LAST_INSERT_ID( expr ) , consulta la documentación de mysql

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2008 08:45 pm
Muchas gracias, ahora tengo todo listo pero al parecer estoy cometiendo un error, la funcion mysql_query() no sirve parece para ejecutar estas instrucciones.-

Código :

$query="START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;";
mysql_query($query,$link);


Me arroja el error 1064.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 20 May 2008 08:52 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2008 09:05 pm
AAhhhhhh ahi esta.. Muchas gracias.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 20 May 2008 10:07 pm
Para ver si quede claro. El codigo me quedo algo como haci:

Código :

mysql_query('begin',$link)
$query = 'insert 1';
mysql_query($query,$link)
if(!empty(mysql_errno($link))) {mysql_query('rollback',$link) }
$query = 'insert 2';
mysql_query($query,$link)
if(!empty(mysql_errno($link))) {mysql_query('rollback',$link) }
$query = 'update';
mysql_query($query,$link)
if(!empty(mysql_errno($link))) {mysql_query('rollback',$link) }
mysql_query('commit',$link)

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 20 May 2008 10:47 pm
Bueno no se que estoy haciendo mal. pero no me funciona, sera por que estoy insertando datos.-
He probado de todas maneras.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 20 May 2008 11:01 pm
¿Que significa esto?

insert 1

Parece como si no conocieras la sintaxis básica de SQL

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2008 11:07 pm
Eso lo puse para resumir codigo, como que ere el primer insert, el segundo insert y el primer update.- Al parecer el error es que mis tablas son MyISAM y para transacciones debe ser InnoDB.

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 20 May 2008 11:27 pm
Ah, ok. En efecto, deben ser InnoDB

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 May 2008 11:57 pm
Y no hay ninguna otra opcion para este tipo de tablas?

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 21 May 2008 02:36 am
Creo que no, pero mira la documentación de mysql correspondiente a tu versión

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.