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

Ejecución de varias sentencias sql..

Estas en el tema de Ejecución de varias sentencias sql.. en el foro de Mysql en Foros del Web. Hola a todos!! Tengo una duda que debo aclararla lo antes posible! :S Esque estoy diseñando un sistema de Facturación, y mi consulta es la ...
  #1 (permalink)  
Antiguo 12/10/2010, 09:36
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Ejecución de varias sentencias sql..

Hola a todos!!

Tengo una duda que debo aclararla lo antes posible! :S Esque estoy diseñando un sistema de Facturación, y mi consulta es la sgte!.

Hay alguna forma de realizar dos 'ABM' de una vez en mysql??

Por ejemplo:

( INSERT INTO TB1 VALUES(...) ;

INSERT INTO TB2 VALUES(...) ; )


Algo así pero si alguna de los dos inserts falla volver al estado anterior.. osea que no haga ninguna acción!!! =S.. Ojala no se muy estúpida mi pregunta, es que soy nuevo en esto, y necesito de su ayudaaaaaa!!!!

Saludos!! .. Gracias!!
  #2 (permalink)  
Antiguo 13/10/2010, 07:32
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 3
Respuesta: Ejecución de varias sentencias sql..

Tu pregunta es más compleja de lo que parece XDD.

Te explico.

Si haces un script, que copias en tu cliente mysql (por ejemplo mysqlyog) y lo ejecutas, te lo hace y fuera, puedes poner todas las querys (seguidas y con ;) que quieras pero tienes que ejecutarlo como "script" y no como "query".

Ahora bien, si lo que quieres es hacer un "undo" como los que hace oracle tirando de redo (Es decir, que si en vez de commit, haces rollback, es como si no te hubiera hecho nada) en oracle sería sencillísima tu pregunta, pero en mysql no.

Mysql tiene varios "engines" para trabajar, dependiendo del que hayas elegido tu (Consciente o inconscientemente), por ejemplo myisam o innodb que son los más famosos, puedes tener la opción de "commit" y "rollback" (investiga por esos terminos a mysql) de tal forma que tu ejecutas el script, y si falla, rollback, y si acierta, commit. No solo es el engine que uses, si no además tener tu mysqld configurado para que funcione esto.

Lo más normal es que estés funcionando en un mysql que no soporta esto, con lo que consulta echa, consulta metida en base de datos.

Te recomiendo que investiges los commits en mysql <-- a ver si encuentras algo que te sirva.

Otra opción, es que te generes un PL/SQL que maneje "excepciones" y si tienes una excepcion, haga no se qué...

No sé si me he explicado y si esto te ayuda o te lia xDDDD
  #3 (permalink)  
Antiguo 13/10/2010, 12:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ejecución de varias sentencias sql..

Hijo de miill Meix!! .. =)

A pesar de que no entendí al 100% de lo que me explicaste, me sirvio bastante.. En serio.. =') jaja.. Muchas gracias!! La verdad que mientras nadie me respondia [.. =( .. ] Continué investigando hasta que encontré una solucion ;) .. Puedo hacer un TRANSSACTION!! Y enviar por ejemplo 3 inserts y si los realiza todo exitosamente lo "Commitea" o si no.. Supongo que "Rollback" =S jaja.. :D .. Voy a seguir investigando sobre esta parte de mysql, la verdad que es muy nuevo para mi.. De Odiar pasé a AMARLO cada vez más! .. BD!! jajaja..

Muchas gracias Meix.. =)
[email protected]
  #4 (permalink)  
Antiguo 15/10/2010, 00:30
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 3
Respuesta: Ejecución de varias sentencias sql..

Buenas de nuevo!

Efectivamente puedes hacerlo así, pero hazme un favor, cuando lo implementes, comprueba que si "falla" te haga rollback realmente, porque dependiendo del engine de tu mysql puede hacerlo o no, si lo hace (Que será lo más normal) genial, si no lo hace, ya miramos que engine usas y como cambiarlo para que te soporte transacciones :)

Un saludo!
  #5 (permalink)  
Antiguo 18/10/2010, 14:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 17
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ejecución de varias sentencias sql..

Ok.. =) .. Te hago el favor de hacer un rollback y verificar si lo realizo..!
Gracias Meix por responder mi tema.. En serio..

Dos Saludos y Un abrazo! q=)

Última edición por luchOrihuela; 18/10/2010 a las 16:02

Etiquetas: sentencias, sql
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 13:46.