I use --single-transaction flag. But anyway, adding BEGIN and COMMIT
doesn't change anything. I stil get that problem.

On Sun, Dec 28, 2014 at 5:43 PM, Melvin Davidson <melvin6...@gmail.com>
wrote:

> You did not show the complete script.
> Did you remember to start the "transaction" with BEGIN; and end with
> COMMIT;?
> eg:
> BEGIN;
> \include ../tables/table1.cre
> \include ../tables/table2.cre
> ...
> \include ../tables/table10.cre
> COMMIT;
>
>
> On Sun, Dec 28, 2014 at 3:02 AM, Viktor Shitkovskiy <hanksm...@gmail.com>
> wrote:
>
>> Hello.
>>
>> I'm trying to execute an sql script file in a single transation. The file
>> contains includes for some other scripts which in my example create some
>> tables. It looks like this:
>>     \include ../tables/table1.cre
>>     \include ../tables/table2.cre
>>     ...
>>     \include ../tables/table10.cre
>>
>> I'm executing it using psql:
>>     psql -X --set AUTOCOMMIT=off --set ON_ERROR_STOP=on -e
>> --single-transaction -d my_db -f my_script.sql
>>
>> The problem is that errors with the include meta command do not cause a
>> transactiopn rollback. e.g. if some of tableX.cre files is missing, any
>> changes before its include will be commited. However, if there's some SQL
>> syntax error, everyting works as expected.
>>
>> Is it possible to somehow handle include related errors and rollback the
>> active transcation?
>>
>> I'm using PostgreSQL 9.2.1.
>>
>> P.S. Initially I asked this question at dba.stackexchange.com:
>> http://dba.stackexchange.com/questions/87040/rollback-on-include-error-in-psql
>>
>
>
>
> --
> *Melvin Davidson*
> I reserve the right to fantasize.  Whether or not you
> wish to share my fantasy is entirely up to you.
>

Reply via email to