Загрузка данных


BEGIN; -- Открываем транзакцию, чтобы всё прошло атомарно

-- =========================================================================
-- STEP 1: Создаем структуру и копируем ВСЁ (комментарии, индексы, дефолты)
-- =========================================================================

-- 1.1 Создаем и наполняем ГЛАВНУЮ таблицу
CREATE TABLE parent_table_new (
    LIKE parent_table 
    INCLUDING COMMENTS 
    INCLUDING INDEXES 
    INCLUDING DEFAULTS 
    INCLUDING IDENTITY
);
INSERT INTO parent_table_new SELECT * FROM parent_table;

-- 1.2 Создаем и наполняем ПОДЧИНЕННУЮ таблицу
CREATE TABLE child_table_new (
    LIKE child_table 
    INCLUDING COMMENTS 
    INCLUDING INDEXES 
    INCLUDING DEFAULTS 
    INCLUDING IDENTITY
);
INSERT INTO child_table_new SELECT * FROM child_table;


-- =========================================================================
-- STEP 2: Переносим связи (Foreign Keys)
-- =========================================================================

-- 2.1 Переносим внешний ключ между НОВЫМИ таблицами.
-- ВАЖНО: Замените 'fk_field_id' на имя колонки, по которой они связаны!
ALTER TABLE child_table_new 
    ADD CONSTRAINT fk_child_parent_new 
    FOREIGN KEY (fk_field_id) 
    REFERENCES parent_table_new(id)
    ON DELETE CASCADE; -- или ON DELETE RESTRICT (как у вас в оригинале)

-- 2.2 Если подчиненная таблица также ссылалась на какие-то внешние справочники БД, 
-- их связи тоже нужно продублировать с помощью LIKE (но это делается вручную):
-- ALTER TABLE child_table_new ADD CONSTRAINT fk_other FOREIGN KEY (...) REFERENCES other_table(...);

COMMIT; -- Фиксируем изменения, если ошибок не возникло