Исходя из комментариев и комментариев, я думаю, что главная проблема здесь в том, что вы хотите, чтобы «А» отправляла событие на основе содержимого незафиксированной строки, а вы хотите, чтобы «Б»читайте и действуйте в этом незафиксированном ряду.Но в теории отношений и в базах данных SQL вы не знаете, удастся ли выполнить коммит.Фиксация может завершиться неудачей по многим причинам - не только из-за сбоя некоторых ограничений, но и из-за недостатка разрешений или дискового пространства.
Чтобы позаимствовать слова из одного из ваших комментариев, dbms управляет переходом базы данных из одного согласованного состояния в другое.Неизвестные строки, как известно, не являются частью согласованного состояния базы данных.Только успешно зафиксированные строки являются частью согласованного состояния базы данных.
Поэтому я думаю, что в общем случае вам нужно «A» для фиксации, прежде чем «B» попытается прочитать новую строку.И я думаю, что это действительно так, даже если вы переключаетесь на dbms, который поддерживает уровень изоляции транзакции read uncommitted.(PostgreSQL не делает, по крайней мере, не так, как вы думаете.)
Это означает, что «B» будет отвечать за удаление новой строки (или за сообщение «A», чтобы удалить ее), если «отправка»выходит из строя.Ни «A», ни «B» не могут откатить совершенную транзакцию.
Для другого процесса, "C", может иметь смысл наблюдать за действиями "A" и "B".