2010-08-24 27 views
197

Quiero modificar una columna de tabla para que pueda contener nulos. He utilizado:Alterar una columna para que sea nula

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL 

Esto da un error en Modify. ¿Cual es la sintaxis correcta?

+6

fija por favor el mensaje de error en el futuro –

+1

He quitado la etiqueta de SQL Server ya que parece que se ha convertido en un país libre en general para todos. –

Respuesta

329

Suponiendo SQL Server (en base a su preguntas anteriores):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL 

Reemplazar INT con su tipo de datos real.

5

Aunque no sé qué RDBMS está utilizando, probablemente necesite dar toda la especificación de la columna, no solo decir que ahora quiere que sea nulable. Por ejemplo, si actualmente es INT NOT NULL, debe emitir ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.

+0

Esta es una respuesta correcta y descriptiva, así que solo aclarar si 'Null' | 'NOT NULL' no se especifica, la columna será anulable. –

4

Como otros han observado, la sintaxis exacta para el comando varía según los diferentes sabores del DBMS. La sintaxis que se utiliza trabajos en Oracle:

SQL> desc MACAddresses 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
COMPUTER           NUMBER 
MACADDRESS           VARCHAR2(12) 
CORRECTED_MACADDRESS      NOT NULL VARCHAR2(17) 

SQL> alter table MACAddresses 
    2  modify corrected_MACAddress null 
    3/

Table altered. 

SQL> desc MACAddresses 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
COMPUTER           NUMBER 
MACADDRESS           VARCHAR2(12) 
CORRECTED_MACADDRESS        VARCHAR2(17) 

SQL> 
37

para usuarios de Oracle Database 10g:

alter table mytable modify(mycolumn null); 

que se obtiene "ORA-01735: no válida opción ALTER TABLE" cuando intenta lo contrario

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL; 
+0

Genial, no tiene que especificar el tipo de datos, simplemente "nulo" para poder anularlo. –

29

Si esta era la sintaxis de MySQL, el tipo habría faltado, como algunas otras respuestas señalan. sintaxis MySQL correcto habría sido:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL 

publicar aquí para mayor claridad a los usuarios de MySQL.

7

en PostgreSQL es:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL; 
Cuestiones relacionadas