Невозможно удалить запись из-за ограничения внешнего ключа - PullRequest
1 голос
/ 19 февраля 2012

В моей базе данных есть таблица под названием "отделы". Содержит информацию об отдельных отделах. Столбец «имя» этой таблицы объявлен как primary key.

Теперь один из моих отделов был удален. Поэтому я хочу удалить эту запись отдела и связанную с ней информацию из моей базы данных. Однако ограничение foreign key мешает мне сделать это. Как я могу решить эту проблему?

1 Ответ

2 голосов
/ 19 февраля 2012

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

Каскадное удаление «решает» эту проблему.Они заставляют соответствующую информацию самоуничтожиться.Я считаю, что в целом более уместно разобраться с этой проблемой самому, а не вооружать оружие, которое может вернуться и укусить меня где-нибудь нежно.

Еще одним соображением во многих случаях является сохранение истории.Если у вас есть контрольный журнал материалов, приобретенных каждым отделом, то вы не можете удалить отдел, не потеряв историю.Вы могли бы оставить связь вне, но это оставило бы историю, висящую с недействительным, или возможно переработанным, идентификатором отдела.Типичное решение - добавить флаг, указывающий, что отдел или другой объект - Inactive.Аналогичным образом, неактивная учетная запись пользователя не позволяет входить в систему, но любая история, связанная с пользователем, останется нетронутой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...