2012-10-09 12 views
8

Sto tentando di creare una transazione in MySql che verrà ripristinata quando si verifica un'eccezione durante la transazione. Simile usando quanto segue in una stored procedure.Script MySQL con rollback su errore

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; 

È possibile eseguire questa operazione senza scrivere una stored procedure? Ad esempio il seguente snippet dovrebbe eseguire il rollback del primo inserimento perché il secondo inserimento fallirebbe.

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

Stai utilizzando PHP? Come questo può raggiungere dal lato della programmazione. –

+0

Nessun PHP solo SQL. Posso realizzare in Java ma i requisiti richiedono solo uno script SQL. – Damien

+0

Perché non hai usato una procedura memorizzata? –

risposta

5

se ho capito bene che si desidera eseguire uno script SQL che contiene, per esempio inserti, in una singola transazione che rollback se uno degli inserti falliscono. È giusto?

Non sono al 100% su questo, ma sono abbastanza sicuro che avresti bisogno di farlo come una stored procedure o in modo programmatico, per esempio, in Java.

+1

Sì, questo è quello che voglio fare ed è la conclusione cui cerco di cercare su Internet, ma trovo difficile credere che l'opzione non sia disponibile per em di uno script SQL. – Damien

Problemi correlati