Я пытаюсь быть максимально ленивым, генерируя серию команд SQL в файле, чтобы передать его psql
для обработки. Короче говоря, я загружаю серию таблиц импорта из внешних источников (уже сделано через COPY), а затем, на последнем этапе, удаляю/обновляю/вставляю записи в первичные таблицы (что функционально также выполняется).
Единственное, что мешает мне добиться успеха (и возможности сделать все из серии команд в сценарии оболочки), — это тот факт, что иногда операция имеет ошибки ссылочной целостности, и поэтому мне приходится откатывать все до тех пор, пока источник не может быть выявлены и исправлены.
Итак, есть ли способ узнать из скрипта, обработанного psql
, если произошла ошибка, и выполнить откат? И если ошибок не было, коммитить.
Я всегда могу решить проблему, переключившись на язык более высокого уровня, открыв соединение и запустив каждый оператор и проверив наличие ошибок, но это всего лишь дополнительный код, которого я хотел бы избежать, если это возможно.