Oracle
 sql >> Database >  >> RDS >> Oracle

Modifica della precisione della colonna numerica in Oracle

Supponendo che inizialmente non hai impostato una precisione, si presume che sia il massimo (38). Stai riducendo la precisione perché la stai cambiando da 38 a 14.

Il modo più semplice per gestirlo è rinominare la colonna, copiare i dati, quindi eliminare la colonna originale:

alter table EVAPP_FEES rename column AMOUNT to AMOUNT_OLD;

alter table EVAPP_FEES add AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_OLD;

alter table EVAPP_FEES drop column AMOUNT_OLD;

Se vuoi davvero mantenere l'ordine delle colonne, puoi invece spostare i dati due volte:

alter table EVAPP_FEES add AMOUNT_TEMP NUMBER(14,2);

update EVAPP_FEES set AMOUNT_TEMP = AMOUNT;

update EVAPP_FEES set AMOUNT = null;

alter table EVAPP_FEES modify AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_TEMP;

alter table EVAPP_FEES drop column AMOUNT_TEMP;