Проверьте, можно ли удалить строку в MySQL - PullRequest
9 голосов
/ 14 сентября 2010

Есть ли способ проверить, может ли строка быть потенциально удалена? То, что он, например, в настоящее время не подключен через ограниченные внешние ключи к чему-либо еще.

Причина: я делаю страницу администратора со всеми перечисленными пользователями системы. Их всегда можно отключить, но они также могут быть удалены. Однако их можно удалить только в том случае, если они не связаны с чем-либо критическим. И я бы не хотел проверять это вручную, если это легко сделать в базе данных.

Примечание: Я не хочу фактически удалять любого пользователя. Я просто хочу показать администратору, что пользователь может быть удален.

Ответы [ 4 ]

4 голосов
/ 14 сентября 2010

Вы можете попытаться удалить его как часть транзакции, а затем откатить транзакцию, если она прошла успешно. НО, я полагаю, что сразу же возникает вопрос: почему вы не знаете, в первую очередь, можете ли вы удалить строку или нет?

1 голос
/ 14 сентября 2010

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

SELECT u.id FROM users u LEFT JOIN jobs j on u.id=j.user_id WHERE j.user_id is null;
1 голос
/ 14 сентября 2010

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

...