oracle中如何改变列的数据类型

How to change the data type of column in oracle

我有一个 master table.It 包含 1300000 records.I 想将列类型从 VARCHAR(100 CHAR) 更改为 VARCHAR2(300 CHAR)。

我计划了一个方法来做到这一点。我将创建一个具有新名称的新列,然后将数据从旧列复制到新列,然后我将删除旧列并使用旧列名称重命名新列。

但是 master table 包含一个触发器。它将数据添加到 master_history table 以进行更新和删除过程。那么,触发器将如何影响我的方式?如果我做上面的处理,可以吗?

我的触发器是:

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;

就顾虑而言,不需要这么复杂的逻辑。 Oracle 允许您使用以下命令扩展 varchar 列的宽度:

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

扩展列宽不会影响现有数据。