Как вставить fk на запись, добавленную в этой же транзакции?
это происходит в одной транзакции и видимо данные еще не видны
Предположение ошибочно.
Перепроверяйте внимательнее, что именно делаете. В частности, действительно ли в той же самой транзакции, говорит ли ошибка именно про это ограничение или может быть про другое.
Нужно для вашего FK указать что проверка constraint может быть отложена (DEFERRABLE), но по умолчанию - нет (INITIALLY IMMEDIATE). Указать нужно или при создании таблицы, или выполнить ALTER CONSTRAINT
DEFERRABLE INITIALLY IMMEDIATE

После чего, в начале транзакции можно объявить проверку вашего FK как отложенную
SET CONSTRAINTS some_fk DEFERRED;

P.S. Ну или выполнять ваши запросы в разных транзакциях, если это допустимо