2012-04-25 27 views
9

stworzyłem poniższą tabelęZmiana typu danych kolumny w Oracle

CREATE TABLE PLACE(
    POSTCODE VARCHAR(10) PRIMARY KEY, 
    STREET_NAME VARCHAR(10), 
    COUNTY VARCHAR(10), 
    CITY VARCHAR(10)); 

Chcę zmienić name, county i city z varchar(10) do varchar(20). Jak mogę to zrobić?

Odpowiedz

21
ALTER TABLE place 
    MODIFY(street_name VARCHAR2(20), 
      county  VARCHAR2(20), 
      city  VARCHAR2(20)) 

Zauważ, że ja również zmiana typu danych z VARCHAR do VARCHAR2 być bardziej konwencjonalne. Obecnie nie ma między nimi żadnej różnicy funkcjonalnej, chociaż zachowanie VARCHAR może ulec zmianie w przyszłości, aby dopasować się do standardu SQL.

+0

tak VARCHAR2 będzie bardziej lepszym rozwiązaniem do korzystania – user1232622

+0

@ user1232622 - 'VARCHAR2' będzie zdecydowanie bardziej konwencjonalny, tak. Jeśli chcesz uniknąć (wprawdzie niewielkiego) ryzyka, że ​​zachowanie kolumn 'VARCHAR' zmieni się w przyszłej wersji Oracle w sposób, który łamie twoją aplikację, chcesz użyć' VARCHAR2'. –

+0

o ok, dzięki za pomoc – user1232622

-2

Nie można zmodyfikować typu danych tabeli, jeśli w tabeli jest już trochę rekordów.

trzeba opróżnić rekordy tabeli kolumny (chcesz zmienić typ danych), a następnie użyć poniższego polecenia:

alter table place 
modify (street_name varchar2(20), country varchar2(20), city varchar2(20)); 

Na pewno warto!

+2

Oracle pozwoli ci modyfikować typy danych na istniejących kolumnach w istniejącej tabeli, gdzie już istnieją dane, o ile istniejące dane są kompatybilne z nowymi danymi rodzaj. W tym przypadku osoba pytająca chce poszerzyć kolumny; na pewno jest to dozwolone bez przenoszenia danych. – MikeB

1

jeśli chcesz zmienić tylko rodzajem zastosowania kolumny poniżej:

ALTER TABLE <table_name> MODIFY (<column_name> <new_Type>) 
in your case:  
ALTER TABLE place MODIFY (street_name VARCHAR2(20), 
          county  VARCHAR2(20), 
          city  VARCHAR2(20)) 

Jeśli tabela zawiera dane, które mogłyby działać poniżej:

  1. dodać kolumnę z nowego typu do tabeli.
  2. skopiuj dane ze starej kolumny do nowej kolumny.
  3. upuść starą kolumnę.
  4. zmienić nazwę nowej kolumny na starą.

Aby zmienić nazwę wykorzystanie kolumny poniżej:

ALTER TABLE <table_name> rename column <column_name> to <new_column_name> 
-1
Alter table placemodify(street name varchar2(20),city varchar2(20) 
Powiązane problemy