Alterar una columna para que sea anulable

318

Quiero alterar una columna de la tabla para que sea anulable. He usado:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

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

RAM
fuente
77
Por favor, publique el mensaje de error en el futuro
a'r
1
Eliminé la etiqueta de SQL Server, ya que parece que se ha convertido en una versión general gratuita para todos.
Martin Smith

Respuestas:

514

Suponiendo SQL Server(según sus preguntas anteriores):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Reemplace INTcon su tipo de datos real.

Quassnoi
fuente
43

para usuarios de Oracle Database 10g:

alter table mytable modify(mycolumn null);

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

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
Igor S.
fuente
Genial, no tiene que especificar el tipo de datos, solo "nulo" para que sea anulable.
Gabe Halsmer
41

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

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Publicar aquí para mayor claridad para los usuarios de MySQL.

djjeck
fuente
29

En PostgresQL es:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Paul LeBeau
fuente
5

Aunque no sé qué RDBMS está utilizando, probablemente deba proporcionar la especificación de la columna completa, no solo decir que ahora desea que sea anulable. Por ejemplo, si es actualmente INT NOT NULL, debe emitir ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.

Hammerita
fuente
Esta es una respuesta correcta y descriptiva, así que solo aclara si Null| NOT NULLno se especifica, la columna será anulable.
Hamid Heydarian
4

Como otros han observado, la sintaxis precisa para el comando varía según los diferentes tipos de DBMS. La sintaxis que usa funciona 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>
APC
fuente
0

Para HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
Libor B.
fuente
0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Esto funcionará para ti.

Si desea cambiar una columna no nula para permitir nula, no es necesario incluir una cláusula no nula. Porque las columnas predeterminadas no se vuelven nulas.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
chamzz.dot
fuente
0

Esto depende de qué motor SQL esté utilizando, en Sybase su comando funciona bien:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;
ZORRO_BLANCO
fuente
0

Oráculo

ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);

Rodrigo Itursarry
fuente
¿Esta respuesta trae algo nuevo con respecto a la respuesta de @ IgorS ? ¿Y qué significa SQL_SCRIPT?
jpeg