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. >