Re: PL/PgSQL: EXIT USING ROLLBACK
От | Tom Lane |
---|---|
Тема | Re: PL/PgSQL: EXIT USING ROLLBACK |
Дата | |
Msg-id | 32224.1406398940@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | PL/PgSQL: EXIT USING ROLLBACK (Marko Tiikkaja <marko@joh.to>) |
Ответы |
Re: PL/PgSQL: EXIT USING ROLLBACK
|
Список | pgsql-hackers |
Marko Tiikkaja <marko@joh.to> writes: > Hello, > Today I'd like to present a way to get rid of code like this: > $$ > BEGIN > BEGIN > INSERT INTO foo VALUES (1); > -- run some tests/checks/whatever > RAISE EXCEPTION 'OK'; > EXCEPTION WHEN raise_exception THEN > IF SQLERRM <> 'OK' THEN > RAISE; > END IF; > END; > RETURN 'success'; > END > $$ > And replace it with code like this: > $$ > BEGIN > <<testsomething>> > BEGIN > INSERT INTO foo VALUES (1); > -- run some tests/checks/whatever > EXIT USING ROLLBACK testsomething; > EXCEPTION WHEN others THEN > RAISE; > END; > RETURN 'success'; > END > $$ Somehow I'm failing to see that as much of an improvement; in fact, it's probably less clear than before. I don't much care for the idea that EXIT should take on some transaction-control properties instead of being a simple transfer of control. In particular, what happens if someone attaches USING ROLLBACK to an EXIT that does not lead from inside to outside a BEGIN/EXCEPTION block? regards, tom lane
В списке pgsql-hackers по дате отправления: