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.