Как изменить тип данных столбца в oracle - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть главная таблица. Она содержит 1300000 записей. Я хочу изменить тип столбца с VARCHAR (100 CHAR) на VARCHAR2 (300 CHAR).

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

Но основная таблица содержит триггер. Он добавляет данные в таблицу master_history для обновления и удаления процессов. Итак, как триггер повлияет на мой путь? Если я сделаю процесс выше, это хорошо?

Мой триггер:

ALTER TRIGGER "TRG_MASTER_" ENABLE;
CREATE OR REPLACE TRIGGER "MASTER" AFTER
    UPDATE OR
    DELETE ON MASTER FOR EACH ROW 
BEGIN
    INSERT
    INTO MASTER_HISTORY
       (
       ORDER_ID,
       CUSTOMER_FIRST_NAME,
       CUSTOMER_LAST_NAME,
       CUSTOMER_EMAIL,
       CUSTOMER_ADRESS      
       )
    VALUES
       (
       :OLD.ORDER_ID,   
       :OLD.CUSTOMER_FIRST_NAME,
       :OLD.CUSTOMER_LAST_NAME,
       :OLD.CUSTOMER_EMAIL,
       :OLD.CUSTOMER_ADDRESS,           
       );
END;

1 Ответ

4 голосов
/ 15 апреля 2020

Что касается этого, в этом сложном логике нет необходимости c. Oracle позволяет увеличить ширину столбца varchar с помощью следующей команды:

ALTER TABLE master_history MODIFY mycol VARCHAR2(300);
                               --^-- modify this to your real column name

Увеличение ширины столбца не влияет на существующие данные.

...