Загружаем изображение…

Как выполнять сложные data-миграции, не ломая UNIQUE-ограничения?



Иногда нужно массово менять данные, временно нарушая UNIQUE, но итоговое состояние корректно:
BEGIN;

Включаем отложенную проверку конкретного ограничения, оно проверится только при COMMIT:
SET CONSTRAINTS users_email_uniq DEFERRED;

Теперь можно выполнять UPDATE/INSERT, даже если в процессе появляются дубликаты:
UPDATE users
SET email = lower(email);


Фиксация происходит один раз, если финальное состояние валидно, транзакция коммитится:
COMMIT;

Если уникальность нарушена в конце будет ROLLBACK, без частичных изменений.

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

SQL Ready | #совет
Просмотры: 547
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти