Вначале я хочу сказать, что я большой поклонник использования внешних ключей и склонен использовать их даже в небольших проектах, чтобы не допустить заполнения моей базы данных потерянными данными. В более крупных проектах я получаю множество ключей, которые покрывают от 8 до 10 слоев данных.
Я хочу знать, может ли кто-нибудь предложить изящный способ обработки «ожидаемых ошибок» из базы данных MySQL таким образом, чтобы я мог создавать значимые сообщения для конечного пользователя. Я объясню «ожидаемые ошибки» на примере.
Допустим, у меня есть набор таблиц, используемых для базовых обсуждений:
discussion
questions
responses
users
Иерархически они, вероятно, будут выглядеть примерно так:
-users
--discussion
---questions
----responses
Когда я пытаюсь удалить пользователя, FK будут проверять обсуждения, и, если какие-либо обсуждения существуют, удаление ограничивается, удаление обсуждения проверяет вопросы, удаление вопросов проверяет ответы. В этом случае «ожидаемой ошибкой» будет попытка удалить пользователя - если только он не создан заново, я могу ожидать, что один или несколько внешних ключей не будут работать, что приведет к ошибке.
Что я ХОЧУ сделать, так это уловить эту ошибку при удалении и сказать конечному пользователю что-то вроде: «Извините, но все обсуждения должны быть удалены, прежде чем вы сможете удалить этого пользователя ...».
Теперь я знаю, что могу сохранять и поддерживать соответствующие массивы в PHP и отображать конкретные ошибки в сообщения, но это беспорядочно и склонно к застою, или я мог бы вручную запустить набор селекторов до попытки удаления, но тогда я выполнять столько же работы, сколько без использования ФК.
Любая помощь здесь будет принята с благодарностью, или если я просто смотрю на это совершенно неправильно, пожалуйста, дайте мне знать.
С другой стороны, я обычно использую CodeIgniter для разработки приложений, поэтому, если это откроет путь через эту среду, учтите это в своих ответах.
Заранее спасибо