2012-10-09 31 views
8

Estoy tratando de crear una transacción en MySql que se retrotraerá cuando ocurra una excepción durante la transacción. Similar usando lo siguiente en un procedimiento almacenado.MySQL Script with rollback on error

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; 

¿Se puede hacer esto sin escribir un procedimiento almacenado? Por ejemplo, el siguiente fragmento debería retrotraer la primera inserción porque la segunda inserción fallaría.

START TRANSACTION; 
INSERT INTO mytable VALUE 'foo1',2,'foo3','foo4' 
INSERT INTO mytable VALUE 'foo1','foo2','foo3','foo4' 
COMMIT 
+0

¿Estás usando PHP? Como esto puede lograr en el lado de la programación. –

+0

No PHP solo SQL. Puedo lograrlo en Java pero los requisitos solo requieren una secuencia de comandos SQL. – Damien

+0

¿Por qué no usó un procedimiento almacenado? –

Respuesta

5

si he entendido bien que desea ejecutar una secuencia de comandos SQL que contiene, por ejemplo inserta, en un una única transacción que deshacer si alguno de los insertos fallan. ¿Es correcto?

No estoy al 100% en esto, pero estoy bastante seguro de que tendría que hacer esto como un procedimiento almacenado o programáticamente en, por ejemplo, Java.

+1

Sí, esto es lo que quiero hacer y es la conclusión a la que accedo desde la búsqueda en Internet, pero me resulta difícil creer que la opción no esté disponible para ellos desde un script SQL. – Damien