MySQL возвращает «Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено» - PullRequest
0 голосов
/ 10 июня 2019

Я видел подобные вопросы, но ни один из них не удовлетворил мою ситуацию.

У меня есть 2 таблицы:

User(id, apartmentId, ....)
Apartment(id, ....)

Когда пользователь создан, идентификатор квартиры равен нулю, когда пользователь присоединился к квартире, будет установлен идентификатор квартиры.

Проблема в том, что после того, как пользователь Ушел из своей квартиры, мне нужно установить для параметра apartmentId значение null, но из-за ограничения внешнего ключа MySql не позволяет мне сделать это, но, как вы можете видеть, это смысловой случай.

Помимо исключения ограничения внешнего ключа, есть ли другой подход?

Вот мой код

    public bool QuitApartment(string userId)
    {
        var user = _userService.GetById(userId);
        if(user == null)
        {
            return false;
        }

        user.ApartmentId = null;

        _dataContext.Entry(user).State = EntityState.Modified;
        _dataContext.SaveChanges();
        return true;
    }

1 Ответ

0 голосов
/ 12 июня 2019

Я обнаружил, что нет способа, чтобы вы могли обновить apartmentId с действительного идентификатора обратно до нуля (как это предотвращают правила базы данных) и в то же время сохранить ограничение внешнего ключа.

Итак, мое окончательное решение - отменить ограничение внешнего ключа, которое решило мою проблему.

Я надеюсь увидеть несколько лучших решений, которые позволят мне

  1. Сохранить ограничение внешнего ключа
  2. Разрешить значимое «обновление нулевого значения»

Приветствия

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