Удалить запись без удаления связанных записей MySQL InnoDB - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть база данных, где у пользователей разные проекты.У пользователя может быть несколько проектов, но у проекта может быть только один пользователь.

У меня возникает проблема, если я собираюсь удалить пользователя без удаления его проектов.MySql не позволит мне удалить пользователя, если я сначала не удалю проекты.

Есть ли способ удалить пользователя и сохранить проекты?

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

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

Этот тип «удаления» обычно выполняется путем мягкого удаления: путем добавления«Неактивный» столбец в ваших таблицах и установите его в «Да» или отличное от нуля или что-то подобное, когда вы хотите пометить определенную строку как удаленную.

1 голос
/ 23 ноября 2011

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

 FOREIGN KEY (user_id)
 REFERENCES users(user_id)
 ON DELETE SET NULL,

к сожалению, вам нужно снова удалить и создать таблицу, поскольку вы не можете использовать alter, чтобы внести изменения в существующую таблицу

0 голосов
/ 23 ноября 2011

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

...