2012-10-09 9 views
8

Próbuję utworzyć transakcję w MySql, która zostanie wycofana, gdy wystąpi wyjątek podczas transakcji. Podobne użycie następujących w procedurze przechowywanej.Skrypt MySQL z wycofywaniem przy błędzie

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; 

Czy można to zrobić bez zapisywania procedury przechowywanej? Na przykład poniższy fragment powinien wycofać pierwszą wstawkę, ponieważ druga wstawka nie powiedzie się.

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

Czy używasz PHP? Jak to można osiągnąć po stronie programowania. –

+0

Brak PHP po prostu SQL. Mogę wykonać w Javie, ale wymagania wymagają tylko skryptu SQL. – Damien

+0

Dlaczego nie użyłeś procedury przechowywanej? –

Odpowiedz

5

Jeśli dobrze rozumiem, chcesz uruchomić skrypt SQL, zawierające na przykład wkładek, w pojedynczej transakcji, która będzie cofnięcie zmian w przypadku któregokolwiek z wkładkami niepowodzeniem. Jest w porządku?

Nie jestem w 100% na ten temat, ale jestem prawie pewien, że trzeba to zrobić jako procedurę przechowywaną lub programowo na przykład w Javie.

+1

Tak, to jest to, co chcę zrobić i jest to wniosek, do którego wyszukuję w Internecie, ale trudno mi uwierzyć, że opcja ta nie jest dostępna dla nich ze skryptu SQL. – Damien

Powiązane problemy