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