Oracle
 sql >> Base de données >  >> RDS >> Oracle

Modification de la précision de la colonne numérique dans Oracle

En supposant que vous n'ayez pas défini de précision au départ, il est supposé être le maximum (38). Vous réduisez la précision car vous la faites passer de 38 à 14.

Le moyen le plus simple de gérer cela consiste à renommer la colonne, à copier les données, puis à supprimer la colonne d'origine :

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;

Si vous voulez vraiment conserver l'ordre des colonnes, vous pouvez déplacer les données deux fois :

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;