Postgres SQL脚本错误失败

有没有一种方法来指定,当遇到脚本的第一个错误时它停止执行一个SQL脚本,它通常会继续,无论以前的错误。

谢谢

我认为将以下内容添加到.psqlrc的解决scheme远非完美

\set ON_ERROR_STOP on 

有更简单便捷的方法 – 使用psql参数:

 psql -v ON_ERROR_STOP=1 

最好使用-X参数closures.psqlrc文件的使用。 为我完美的作品

PS从彼得Eisentraut伟大的职位find解决scheme。 谢谢,彼得! http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html

我假设你正在使用psql ,这可能是方便添加到您的~/.psqlrc文件。

 \set ON_ERROR_STOP on 

这会使第一个错误中止。 如果你没有它,即使有一个事务,它将继续执行你的脚本,但是一切都会失败,直到脚本结束。

保罗说,你可能想用一个交易。 这也可以用psql --single-transaction ...来完成psql --single-transaction ...如果你不想改变脚本。

所以一个完整的例子,在你的.psqlrc中有ON_ERROR_STOP:

 psql --single-transaction --file /your/script.sql 

这不正是你想要的,但如果你开始你的脚本begin transaction; 并以end transaction; ,在第一个错误之后,它实际上会跳过所有的东西,然后它会在错误之前回滚它所做的一切。