Есть ли способ избежать ошибок целостности FK без фиксации? - PullRequest
0 голосов
/ 11 апреля 2019

Я использую полезную нагрузку API для обновления базы данных.У меня есть некоторые бизнес-правила, навязанные ограничениями внешнего ключа, например: с адресом должен быть связан идентификатор клиента (один клиент <-> много адресов ').

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

  1. Обновление клиентов
  2. Адрес обновления
  3. Зафиксировать все изменения

В основном я использую список экземпляров классов для вызова add_all (), и просто фиксирую после обоих add_all.Где id - это PK для клиентов, а FK для адресов.

customers_list = []
customer_entry = Customers(name=name, id=id)
customer_list.append(entries)
db.session.add_all(customer_list)

address_list = []
address_entry = Address(id=customer_id, zip=zip)
address_list.append(entries)
db.session.add_all(address_list)

db.session.commit()

Дело в том, что, когда он получает адрес, он выдает ошибку целостности, поскольку не может найти customer_id в таблице «Клиенты» (поскольку она не была зафиксирована).

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

Как сохранить согласованность, избегая ошибок целостности (ограничение FK)?

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