Полагаю, вы используете psql
, это может быть удобно для добавления в файл ~/.psqlrc
.
\set ON_ERROR_STOP on
Это приведет к прерыванию при первой ошибке. Если у вас его нет, даже при транзакции он продолжит выполнение вашего сценария, но завершится сбоем во всем до конца вашего сценария.
И вы, вероятно, хотите использовать транзакцию, как сказал Пол. Что также можно сделать с помощью psql --single-transaction ...
, если вы не хотите изменять скрипт.
Итак, полный пример с ON_ERROR_STOP в вашем .psqlrc:
psql --single-transaction --file /your/script.sql