Вы можете сделать это с помощью триггера в принципе. Если API является внешним по отношению к базе данных, вам понадобится триггерная функция, написанная на C или языке, таком как PL / Perl или PL / Python, который может выполнять необходимое действие.
Тем не менее, если это действие не может быть гарантировано быстрым, не рекомендуется запускать его в триггере. Триггер запускается в той же транзакции, что и оператор триггера, поэтому, если ваш триггер работает в течение длительного времени, вы получаете длинную транзакцию базы данных. Это имеет два основных недостатка:
Блокировки удерживаются в течение длительного времени, что вредит параллелизму и, следовательно, производительности, а также повышает риск возникновения тупиковых ситуаций.
Autovacuum не может удалить мертвые строки, которые все еще были активны при запуске транзакции, что может привести к чрезмерному раздутию таблицы в занятых таблицах.
Чтобы избежать этого риска, часто лучше использовать систему очередей: триггер создает запись в очереди, которая является быстрым действием, и рабочие процессы считывают и обрабатывают эти записи очереди асинхронно вне базы данных.
Реализация очереди в базе данных общеизвестно сложна, поэтому вы можете захотеть поискать существующие решения.