我正在尝试使用psql执行多个SQL脚本。我创建了一个主脚本,其中包含所有要执行的脚本,如下所示。我希望所有脚本一起成功或失败。
master.sql
BEGIN;
\i one.sql
\i two.sql
\i three.sql
COMMIT;
我试图捕获psql的错误代码以确定它是否成功。当我查询?$时,它总是返回0。我想出在将ON_ERROR_STOP = 1添加到命令时会返回正确的错误代码。这种方法存在问题,如果错误发生在three.sql中,则它不会回退one.sql和two.sql事务。
psql -U postgres -h localhost -d test -v ON_ERROR_STOP=1 -f master.sql
找出脚本是否成功执行的正确方法是什么。