ORA-01440: column to be modified must be empty (修改列型別時報錯:要修改的列必須為空)

胖头孙發表於2024-09-19
  • 建立新列:在表中新增一個新的列,然後將資料遷移到新列,最後刪除舊列並重新命名新列。

    ALTER TABLE "MESDB"."NC_WORKORDER"
    ADD ("RECEIPT_QUANTITY_NEW" NUMBER(10,6));

    -- 將資料遷移到新列
    UPDATE "MESDB"."NC_WORKORDER"
    SET "RECEIPT_QUANTITY_NEW" = "RECEIPT_QUANTITY";

    -- 刪除舊列
    ALTER TABLE "MESDB"."NC_WORKORDER"
    DROP COLUMN "RECEIPT_QUANTITY";

    -- 重新命名新列為舊列名
    ALTER TABLE "MESDB"."NC_WORKORDER"
    RENAME COLUMN "RECEIPT_QUANTITY_NEW" TO "RECEIPT_QUANTITY";
  • 使用臨時表:建立一個臨時表,按新的精度和刻度複製資料,然後替換原表。

相關文章