правильно — не делать это в ф-ции, контролировать на уровне приложения
из-за того что Postgres не может?
Правильно такое делать с помощью exception (см. https://www.postgresql.org/docs/current/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING ), т.е. управление транзакциями в функциях просто не нужно. Вы, наверное, пришли с какой-то другой СУБД, где другой подход — стоит изменить привычки, а не искать способы работать в PostgreSQL так, как было там.
Обсуждают сегодня