Это вопрос, который на первый взгляд выглядит хорошо, но имеет значение.
Прежде всего, вам нужно убедиться, что после прочтения состояния этих отношений никто не сможет их изменить, поэтому, очевидно, вам нужно использовать транзакцию и заблокировать соответствующие строки.
Тогда вам нужен способ выяснить, какие отношения проверять, как я вижу в комментарии здесь ваш вопрос о том, что произойдет, если кто-то позже добавит новое отношение. Поэтому вам нужно запросить схему или, возможно, автоматически сгенерировать этот код из схемы, чтобы механизм обнаружения мог запускаться только каждый раз, когда вы меняете схему.
Теперь, действительно ли исключение, которое вы получаете, кажется таким дорогим после этого испытания?