Есть ли способ, когда у вас есть список записей, проверить, есть ли у каждой из этих записей ссылки на внешние ключи, прежде чем пытаться удалить какую-либо из этих записей?
Например, если у меня есть список заемщиков и список книг, вы не сможете удалить заемщика из системы, если у него все еще есть книги в кредит. (Моя настоящая система намного сложнее, чем эта - намного больше таблиц.)
Я хотел бы удалить опцию удаления для всех заемщиков, у которых есть книги в кредит (в этом примере).
Если я пытаюсь удалить запись со ссылками на внешний ключ, я получаю сообщение об ошибке:
Ошибка доступа к базе данных: невозможно удалить или обновить родительскую строку: не удалось выполнить ограничение внешнего ключа (dbname
. tablename
, CONSTRAINT fkfieldid
FOREIGN KEY (fieldid
) ССЫЛКИ tablename
(fieldid
))
Одним из решений является написание запроса, чтобы проверить, имеет ли каждая запись в списке записей ссылки на внешние ключи в любой из возможных таблиц, на которые она может ссылаться.
Однако, если я хочу отобразить список из 100 записей из таблицы в моей системе управления контентом, и мне нужно выполнить 100 подзапросов, чтобы отобразить этот список, это, очевидно, очень неэффективно!
Конечные пользователи смущаются, когда пытаются удалить запись, но не могут, потому что эти данные «используются» в другом месте, поэтому я бы предпочел удалить опцию «Удалить», чтобы избежать путаницы.
Есть идеи, что было бы лучше всего сделать?
Спасибо.