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

Ændring af præcision af numerisk kolonne i Oracle

Forudsat at du ikke har indstillet en præcision i starten, antages det at være maksimum (38). Du reducerer præcisionen, fordi du ændrer den fra 38 til 14.

Den nemmeste måde at håndtere dette på er at omdøbe kolonnen, kopiere dataene over og derefter slippe den oprindelige kolonne:

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;

Hvis du virkelig ønsker at beholde kolonnerækkefølgen, kan du i stedet flytte dataene to gange:

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;


  1. Sådan aktiverer du CDC på sæt af tabeller ELLER aktiverer på alle tabeller i en database i SQL Server - SQL Server Tutorial

  2. Hvad er LENGTH() i MySQL?

  3. postgreSQL - psql \i :hvordan man udfører script i en given sti

  4. Bestil en MySQL-tabel efter to kolonner