Esta es una pregunta que en la superficie parece buena, pero tiene implicaciones.
En primer lugar, debe asegurarse de que después de leer el estado de esas relaciones, nadie pueda cambiarlas, por lo que obviamente necesita usar una transacción y bloquear las filas en cuestión.
Luego, necesita una forma de averiguar qué relaciones verificar, como veo en un comentario aquí su pregunta sobre qué sucede si alguien luego agrega una nueva relación. Por lo tanto, debe consultar el esquema, o quizás generar automáticamente este código a partir del esquema, de modo que el mecanismo de detección solo deba ejecutarse cada vez que cambie el esquema.
Ahora, ¿la excepción que obtienes realmente parece tan costosa después de esta terrible experiencia?