2012-04-25 27 views

Respuesta

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

Nota que yo también estoy cambiando el tipo de datos de VARCHAR a VARCHAR2 a ser más convencional. Actualmente no existe una diferencia funcional entre los dos, aunque el comportamiento de VARCHAR puede cambiar en el futuro para que coincida con el estándar SQL.

+0

por lo VARCHAR2 habrá una más mejor opción para usar – user1232622

+0

@ user1232622 - 'VARCHAR2' sin duda será más convencional, sí. Si desea evitar el riesgo (ciertamente pequeño) de que el comportamiento de sus columnas 'VARCHAR' cambiará en una versión futura de Oracle de una manera que rompa su aplicación, quiere usar' VARCHAR2'. –

+0

oh ok gracias por la ayuda – user1232622

-2

No puede modificar el tipo de datos de una tabla si tiene cierta cantidad de registros ya presentes en la tabla.

Hay que vaciar los registros de la tabla de la columna (que desea modificar el tipo de datos), luego utilice el siguiente comando:

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

Definitivamente va a trabajar!

+2

Oracle le permitirá modificar tipos de datos en columnas existentes en una tabla existente donde ya hay datos, siempre que los datos existentes sean compatibles con los datos nuevos tipo. En este caso, el que pregunta quiere agrandar las columnas; ciertamente, eso está permitido sin mover datos. – MikeB

1

si desea cambiar sólo el tipo de uso columna a continuación:

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)) 

Si la tabla tiene datos que podría actuar a continuación:

  1. añadir una columna con nuevo tipo de mesa.
  2. copie los datos de la columna anterior a la columna nueva.
  3. drop old column.
  4. cambiar el nombre de la columna nueva a anterior.

Para cambiar el nombre de una columna de uso a continuación:

ALTER TABLE <table_name> rename column <column_name> to <new_column_name> 
-1
Alter table placemodify(street name varchar2(20),city varchar2(20) 
Cuestiones relacionadas