Если мы делаем смену Primary Key не в одной транзакции, а в двух разных транзакциях, какую проблему мы можем получить?

Две транзакции открывают промежуточное состояние: старый ключ уже изменён или удалён, а связанные данные ещё не согласованы. Сбой между шагами может оставить операцию наполовину выполненной.

Короткий ответ

Что ответить на собеседовании

Две транзакции открывают промежуточное состояние: старый ключ уже изменён или удалён, а связанные данные ещё не согласованы. Сбой между шагами может оставить операцию наполовину выполненной.

Подробный разбор

Ответ с пояснениями

Две транзакции открывают промежуточное состояние: старый ключ уже изменён или удалён, а связанные данные ещё не согласованы. Сбой между шагами может оставить операцию наполовину выполненной.

Другой запрос может увидеть неполную миграцию или записать данные со старым идентификатором. Внешние ключи могут заблокировать первый шаг, но отсутствие ошибки не гарантирует согласованность всего приложения. Если изменение действительно нужно, связанные записи обновляют в одной транзакции с подходящими ограничениями, например каскадным обновлением там, где оно предусмотрено. Для большой онлайн-миграции используют expand-contract и совместимость старого/нового идентификатора, а не две несвязанные записи. Лучше заранее выбирать стабильный primary key.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее