Как добавить поле в большую таблицу postgresql без блокировки?

Пользователь

от kenya , в категории: SQL , 6 месяцев назад

Как добавить поле в большую таблицу postgresql без блокировки?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ally , 6 месяцев назад

@kenya 

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

  1. Создайте новую временную таблицу, в которой будет присутствовать новое поле со всеми нужными вам изменениями.
1
CREATE TABLE new_table AS SELECT * FROM old_table;


  1. Добавьте новое поле во временную таблицу.
1
ALTER TABLE new_table ADD COLUMN new_column_name datatype;


  1. Скопируйте данные из старой таблицы в новую.
1
INSERT INTO new_table SELECT * FROM old_table;


  1. Переименуйте старую таблицу в backup_table.
1
ALTER TABLE old_table RENAME TO backup_table;


  1. Переименуйте новую таблицу в название старой таблицы.
1
ALTER TABLE new_table RENAME TO old_table;


  1. (Дополнительно) Выполните другие необходимые операции на обновленной таблице, такие как создание индексов или ограничений.


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