Oracleが適用する変更表フィールドのタイプ

740 ワード

Mysqlは、データがあるテーブルフィールドとないテーブルフィールドのタイプを任意に変更できますが、oracleは異なります.テーブルAにフィールドaがある場合、本来numberタイプであり、varchar 2タイプに変更したい.(1)フィールドaにデータがない場合はvarchar 2(10)に変更し、以下のようにすることができる.
alter table A modify (a varchar2(10));

(2)フィールドにデータがある場合は、上記のsqlを実行するとヒントが表示されます
「ORA-01439:データ型を変更するには、変更する列を空にする必要があります」
この場合、私たちは考えを変えて修正することができます.考えは、まず一時的なフィールドを作成し、データバックアップを行います.
    varchar2       
alter table A add new_temp varchar2(10);
      a
update A set new_temp = a;
    
commit;
    a  
update A set a = '';
    
commit;
  a       
alter table A modify a varchar2(10);
           
update A set a = new_temp;
    
commit;
drop      
alter table appr_control_info_ex drop column new_temp;